请查看我在此处询问的问题中的代码:Data Access Layer returns DataTable。数据访问层 - 包含两个实体的返回类型
我有数据传输对象来表示持久实体。例如,假设我在数据库中有一个名为Customer的表和一个名为Order的表:
CREATE TABLE Customer(ID int,Name VARCHAR(100),Primary Key(ID)) CREATE TABLE Order(ID int,名称VARCHAR(100),主键(ID))
假设我想从数据库中检索与客户相关的所有订单。我可以看到两个选项:
1)具有结合客户和订单如下类型(注意顺序排列):
Public Class CustomerOrder
Private _CustomerID As Integer
Private _Name As String
Private _OrderID() As Integer
Public Property CustomerID() As Integer
Get
Return _CustomerID
End Get
Set(ByVal value As Integer)
_CustomerID = value
End Set
End Property
Public Property Name() As Integer
Get
Return _Name
End Get
Set(ByVal value As Integer)
_Name = value
End Set
End Property
Public Property OrderID() As Integer()
Get
Return _OrderID
End Get
Set(ByVal value As Integer())
_OrderID = value
End Set
End Property
End Class
2)返回一个客户对象和订单对象的列表。客户和订单会有自己的类型。
我相信选项1更好,但如果类型只应该定位到一个数据库表,我就会游荡。
谢谢。如果客户和订单之间存在一对一的关系,您的观点会改变吗?即类中的orderid将是一个整数而不是整数数组。 +1。 – w0051977 2013-03-21 21:22:01
我认为这取决于我将访问任何对象的程度。如果我发现自己同时使用这两种方法,我可能只会创建一个具有订单和客户属性的类。我所有的存储过程和视图都会带来所有的数据。如果您查看EntityFramework以及它将执行此操作的方式,它会为您的客户类创建订单列表。 – 2013-03-21 21:24:02
您是不是指名为CustomerOrder的类,其中包含Customer表中所有字段的属性以及Order表中的所有字段? – w0051977 2013-03-21 21:30:09