EF中的多对多关系

时间:2010-05-28 14:32:55

标签: entity-framework

我有一个关于EF 1.0的简单问题,并且一直在网上寻找一个简单的答案,但到目前为止没有运气:

我们即将构建一个以SQL Server作为后端的小应用程序,并且一直在考虑使用EF 1.0。与许多大公司一样,我们公司在采用新平台方面并没有迅速采取行动,这意味着.NET 4.0将不会在机器上安装很长一段时间,因此不可能使用EF 4.0。

这是一个问题(基于一个非常简单的例子):

多对多关系中的三个表:

订单:OrderID(PK),Customer,OrderDate

OrderDetails:OrderDetailID(PK),OrderID(FK),ProductID(FK),Quantity,BackOrdered

产品:ProductID(PK),ProductName,Category

我们要创建的是具有订单信息的Order实例和OrderDetails 的列表,包括 ProductName

这方面的SQL是微不足道的,所以我不会厌烦你。在EF 1.0中获取Order和OrderDetails列表也很容易。但当您获得列表时,ProductID将标识产品,我们需要ProductName。

我们看过this article。这是实现我们需要的唯一途径吗?好像很多工作......

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

根据您的描述进行推断,如果您正在寻找选择,那么这些内容可以起作用:

var query = from o in context.Order
                             .Include("OrderDetails")
                             .Include("OrderDetails.Product")
            select o;

然后,您可以通过导航属性访问信息,例如:

// using first here just for exemple purpose.
Order o = query.First();
var details = o.OrderDetails;
var aProductName = o.OrderDetails.First().ProductName;