2010-05-28 94 views
1

我有什么似乎是约1.0 EF一个简单的问题,并一直在寻找所有网站上的一个简单的答案,但有到目前为止没有运气:许多在EF许多关系

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

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

三个表中一个多对多的关系:

订购:订单(PK),客户,订购日期

订单明细:OrderDetailID (PK),订单ID(FK),产品ID(FK),数量,延期交货

产品:产品ID(PK),产品名称,类别

我们怎么创造是有订单信息和订单明细名单包括产品名称

这样做的SQL是平凡的订单情况,所以我不会与来烦你。在EF 1.0中获取Order和OrderDetails列表也很容易。但是,当您获取产品ID时,ProductID将识别产品,并且我们需要ProductName。我们看过this article。这是完成我们所需要的唯一方法吗?好像工作的大量...

感谢所有帮助

+0

要插入一个订单,其订单明细,那些具有产品的每一个列表。我假设OrderDetails也是新的,因此也需要插入,但是该产品呢,它是一个现有的产品吗? – 2010-05-28 14:38:37

+0

哼,我想不出你是否试图在数据存储中插入一个新的实体,或者选择一个已经填充了导航属性的实体。 – 2010-05-28 14:39:39

+0

对不起,我对这个问题不够清楚。这是我正在寻找的选择,我认为它已被回答。 谢谢。 – 2010-05-28 15:05:52

回答

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;