【发布时间】:2011-05-30 15:54:10
【问题描述】:
使用 VS2008 和 Sql CE 3.5,最好是 Linq to Sql。
我正在学习数据库,但不确定 DAL 方法的返回类型以及如何/在何处将数据映射到我的业务对象:我不想要直接的 UI 绑定。
一个业务对象类 UserData 和一个类 UserDataList (Inherits List(Of UserData)) 在数据库中由表“Users”表示。我使用 SQL Compact 并运行创建 dbml/designer.vb 文件的 SqlMetal。这给了我一个带有 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() 的查询/返回类型有问题.. 不知道该怎么做..
【问题讨论】:
-
为什么不直接使用 linq to sql 类型呢?它们是部分类定义,因此如果您需要向它们添加额外的“东西”,您可以...
-
作为业务对象类型.. 嗯,是的,我想过,但不确定这是否合适。我会试试的。
标签: sql sql-server-ce data-access-layer