从DAL类返回类型(Sql ce,Linq到Sql)

时间:2010-12-25 15:45:46

标签: sql sql-server-ce data-access-layer

使用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()的查询/返回类型的问题..不确定如何做到这一点..

1 个答案:

答案 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工具。