【问题标题】:Linq to Entities (join query) - WPF - 4 layer applicationLinq to Entities (join query) - WPF - 4层应用
【发布时间】: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 层应用程序中做到这一点?

感谢任何可以指导我找到解决这种情况的好方法的回复 卢克

【问题讨论】:

    标签: wpf linq entities layer


    【解决方案1】:

    如果您延迟加载实体,那么您的供应商实体应该有每个邮寄/账单的附加地址实体。为什么不直接创建一个适当的供应商类,该类具有邮件/帐单的属性,这些属性是地址类而不是 Ids?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      相关资源
      最近更新 更多