代码之家  ›  专栏  ›  技术社区  ›  Phil Wright

具有和不具有ObjectResult的LINQ到实体之间的差异

  •  1
  • Phil Wright  · 技术社区  · 16 年前

    我有以下LINQ到实体查询。。。

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

    它可以很好地返回联系人集合。但我已经看到了这样做的示例代码。。。

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

    有什么区别?ObjectResult还包含返回的联系人的集合。这仅仅是句法上的,还是真的有根本的区别?

    1 回复  |  直到 16 年前
        1
  •  4
  •   Alex James    16 年前

    ObjectResult<&燃气轮机;只是开始枚举IQueryable时EF返回的类型<&燃气轮机(i、 e.背景(联系)。

    所以如果你 立即 枚举两个查询中的任意一个,语义相同。

    唯一的区别是,在第一个示例中,如果组合更多查询操作,则在枚举时,这些操作将附加到发送到数据库的查询中,而在第二个示例中,它们将通过LINQ在内存中应用到对象。

    另外,Execute(..)提供了对MergeOptions的更简单的访问(例如,数据库副本是否覆盖内存中已有的副本,或者visa是否覆盖内存中已有的副本)。可以使用ObjectQuery上的MergeOptions属性执行此操作<&燃气轮机;我也是,但这有点麻烦。

    希望这有帮助