我有以下LINQ to Entities查询...
var results = from c in context.Contacts
select c;
在返回联系人集合时工作正常。但我已经看到了代替这样做的示例代码......
ObjectResult<Contact> results = (from c in context.Contacts
select c).Execute();
有什么区别? ObjectResult还有一组返回的联系人。它只是语法还是存在真正的根本区别?
答案 0 :(得分:4)
ObjectResult&LT;&GT;当您开始枚举IQueryable&lt;&gt;时,它就是EF返回的类型(即context.Contacts)。
因此,如果您立即枚举您的两个查询中的任何一个,从语义上来说它是相同的。
唯一的区别是,在第一个示例中,如果编写更多查询操作,它们将被附加到枚举时发送到数据库的查询,而在第二个示例中,它们将通过LINQ to Objects在内存中应用。
此外,Execute(..)提供了更简单的MergeOptions访问权限(例如,如果数据库副本覆盖已经在内存中的副本,反之亦然)。您可以使用ObjectQuery&lt;&gt;上的MergeOptions属性执行此操作。也是,但这有点麻烦。
希望这有帮助
亚历