【发布时间】:2011-02-24 15:30:06
【问题描述】:
我是新手,我想知道有经验的程序员如何处理以下情况
假设我有一个表“供应商”,其中包含一些常见字段以及 MailingAddress、BillingAddress 字段,它们是链接到另一个表“地址”的 2 个关键字段
TB 供应商
ID = 1 名称 = MyNameFoo MailingAddressId = 100 帐单地址 = 101
TB 地址
ID = 100 街道 = MailingStreetFoo 城市 = MailingCityFoo
ID = 101 街道 = BillingStreetFoo 城市 = BillingCityFoo
我有一个 4 层应用解决方案:
项目 xyz.WPF 包含我的所有 WPF 窗口以向用户呈现数据(带绑定的列表框)
项目 xyz.Business:在 WPF 和 DataAccess 之间(SupplierB.vb、AddressB.vb)
项目 xyz.DataAccess.SqlServer :数据层(SupplierDAL.vb,AddressDAL.vb)
project xyz.Entities :存储我的实体类,每个代表一个表并只保存属性。我使用它从一层传递到另一层(SupplierE.vb、AddressE.vb)。
SupplierDAL 类从 SQL Server 获取数据并将“List(Of SupplierE)”返回给 SupplierB 类,后者将这个“List(Of SupplierE)”返回到绑定到列表框的 WPF -> Listbox.ItemsSource = SupplierB。 GetAllSuppliers()。
现在我可以获取所有供应商并将它们显示在列表框(或数据网格,...)的 WPF 窗口中,我还可以获取所有地址并显示它们。
但在某些时候,我想获取一个供应商的所有地址(邮寄、帐单)。我知道如何用 linq 编写我的查询(加入 2 个表),但我与它的结果有什么关系。它不是 SupplierE 也不是 AddressE;这是两者的结合。我希望结果是一个可以在层间传递的对象,就像 SupplierE.vb、AddressE.vb 一样。当然,我可以创建另一个实体,例如 SupplierAddressesE.vb;问题解决了,但在我的实际解决方案中,我有几十个连接查询,连接几个不同的表(不仅仅是供应商,地址)。
所以很多表,很多join查询结果;这是否意味着我必须为每个不同的连接查询创建一个实体对象 (xxxE.vb),还是有另一种方法可以在带有 Linq to Entities 的 4 层应用程序中做到这一点?
感谢任何可以指导我找到解决这种情况的好方法的回复 卢克
【问题讨论】: