Используя 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 () .. Не знаете, как это сделать ..