两个代码段之间的差异

时间:2011-09-12 14:31:33

标签: entity-framework

之间有什么区别
ObjectQuery<SalesOrderHeader> query =
context.Contacts.Include("SalesOrderHeaders").Include("SalesOrderDetails");

Contact contact =
context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails").FirstOrDefault();

使用一个优于另一个的任何优势? 我的主要困惑是在第一个Include中使用2 Include并在第二个{{1}}中使用2个表。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

在实体框架上,您有一些名为导航属性(在.edmx模型上命名),因此您可以根据它们访问相关实体,换句话说,您可以使用导航属性来急切加载(包含)相关数据。

我猜你有这样的关系:One Contact可以有很多SalesOrderHeaders,一个SalesOrderHeader可以有很多SalesOrderDetails,所以如果你从contacts实体开始加载并希望加载这两个关系,你应该这样做:

Contact contact = context.Contacts.Include("SalesOrderHeaders").Include("SalesOrderHeaders.SalesOrderDetails").FirstOrDefault();

正如您所看到的,我们首先使用include来从DB中获取SalesOrderHeaders,并使用secound来将SalesOrderDetails带入SalesOrderHeaders导航属性,因为我们从Contacts

开始