Тип возврата из класса DAL (Sql ce, Linq to Sql) - PullRequest
0 голосов
/ 25 декабря 2010

Используя VS2008 и Sql CE 3.5, и предпочтительно Linq-Sql.

Я изучаю базу данных и не уверен насчет типов возвращаемых методов DAL и того, как / где сопоставить данные с моими бизнес-объектами: я не хочу прямой привязки пользовательского интерфейса.

Класс бизнес-объекта UserData и класс UserDataList (Inherits List (Of UserData)) представлены в базе данных таблицей «Пользователи».Я использую SQL Compact и запускаю SqlMetal, который создает файл dbml / designer.vb.Это дает мне класс с TableAttribute:

<Table()>  _
Partial Public Class Users

Я не уверен, как использовать этот класс.Должен ли мой бизнес-объект знать об этом классе, чтобы DAL мог возвращать тип Users или List (Of Users)?

Так, например, «Класс UserDataService» является частью DAL и будет иметь, например, функции GetAll и GetById.Будет ли это правильно:?

Public Class UserDataService

Public Function GetAll() As List(Of Users)
    Dim ctx As New MyDB(connection)
    Dim q As List(Of Users) = From n In ctx.Users Select n
    Return q
End Function

Public Function GetById(ByVal id As Integer) As Users
    Dim ctx As New MyDB(connection)
    Dim q As Users = (From n In ctx.Users Where n.UserID = id Select n).Single
    Return q
End Function

И тогда, возможно, у меня будет метод, скажем, в классе UserDataList, например:

Public Class UserDataList
   Inherits List(Of UserData)

Public Sub LoadFromDatabase()

      Me.clear()
      Dim database as New UserDataService
      dim users as List(Of Users)
      users = database.GetAll()

      For each u in users
          dim newUser as new UserData
          newUser.Id = u.Id
          newUser.Name = u.Name
         Me.Add(newUser)
      Next

End Sub

End Class

Это разумный подход?Буду признателен за любые предложения / альтернативы, так как это моя первая попытка базы данных DAL.

ура!

РЕДАКТИРОВАТЬ:

Кажется, у меня есть проблемы с типами запросов / возврата GetAll () и GetAllById () .. Не знаете, как это сделать ..

1 Ответ

0 голосов
/ 25 декабря 2010

Откройте Visual Studio.

Откройте вкладку соединений с сервером и подключитесь к вашему SQL-серверу.

В своем проекте добавьте новый контекст данных Linq To SQL.Это добавит новый файл.Как только это откроется в конструкторе, перетащите таблицы из вашей базы данных в контекст данных SQL.

Теперь вы можете перейти к своему коду и сказать:

NameOfYourDataContext dc = new NameOfYourDataContext();

var query = from row in dc.table
            where property == 0 //Filter if needed
            select row;

//OR var query = dc.table.where(row => row.Property == 0);

int i = 0;

foreach(var row in query)
{
   row.property = i++;
}

dc.SubmitChanges();

Если вы действительно пытаетесь управлять созданным классом, я рекомендую вам изучить инструмент SQL Metal, который может создавать контексты данных из XML-файла.

...