代码之家  ›  专栏  ›  技术社区  ›  Xodarap

实体的LINQ是否包括跨调用的工作?

  •  1
  • Xodarap  · 技术社区  · 14 年前

    如果我有这样的东西:

    x = from f in first.Include("second")
        where f.id == 1
        select f
    
    y = from s in second
        where s.first.id == 1
        select s
    

    将两个查询发送到我的数据库吗?我意识到我可以设置y=f.second以确保只进行一次调用,但是我经常想考虑我的代码,这样我就可以独立于是否进行了第一次调用而进行第二次调用——必须在可以传递f.second的地方进行重载,这很烦人。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nix    14 年前

    假设您枚举查询,将进行两次调用。

    但是我经常想考虑我的代码,这样我就可以独立于是否已经做了第一个调用来进行第二个调用。

    您是否有理由将查询分开?您编写的两个查询是相同的。您已经在查询X中检索到了所有需要的数据。您不需要执行第二个查询,因为您只需执行

     x.Seconds;
     //or if there is more than one result in x
     x.SelectMany(y=>y.Seconds);