使用和不使用ObjectResult的LINQ to Entities之间的区别

时间:2009-12-04 04:34:21

标签: entity-framework linq-to-entities

我有以下LINQ to Entities查询...

var results = from c in context.Contacts
              select c;

在返回联系人集合时工作正常。但我已经看到了代替这样做的示例代码......

ObjectResult<Contact> results = (from c in context.Contacts
                                 select c).Execute();

有什么区别? ObjectResult还有一组返回的联系人。它只是语法还是存在真正的根本区别?

1 个答案:

答案 0 :(得分:4)

ObjectResult&LT;&GT;当您开始枚举IQueryable&lt;&gt;时,它就是EF返回的类型(即context.Contacts)。

因此,如果您立即枚举您的两个查询中的任何一个,从语义上来说它是相同的。

唯一的区别是,在第一个示例中,如果编写更多查询操作,它们将被附加到枚举时发送到数据库的查询,而在第二个示例中,它们将通过LINQ to Objects在内存中应用。

此外,Execute(..)提供了更简单的MergeOptions访问权限(例如,如果数据库副本覆盖已经在内存中的副本,反之亦然)。您可以使用ObjectQuery&lt;&gt;上的MergeOptions属性执行此操作。也是,但这有点麻烦。

希望这有帮助

亚历