使用VS2008和Sql CE 3.5,最好是Linq to Sql。
我正在学习数据库,并且不确定DAL方法的返回类型以及将数据映射到业务对象的方式/位置:我不想直接UI绑定。
业务对象类UserData和类UserDataList(Inherits List(Of UserData))在数据库中由表“Users”表示。我使用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()的查询/返回类型的问题..不确定如何做到这一点..
答案 0 :(得分:0)
打开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();
如果您真的想要控制创建的类,那么我建议您查看可以从xml文件创建数据上下文的SQL Metal工具。