【问题标题】:Include in Entity Framework 4.1包含在实体框架 4.1 中
【发布时间】:2012-08-23 05:02:27
【问题描述】:

假设我有 3 个实体 Country 、 State 和 City 。关系是 City->State->Country。现在我可以查询类似的搜索

 return container.Countries.Include("States.Cities")
.Where(c=>c.States.Sum(s.Population)>10000)
.Search(filter)        
.Skip(startIndex)    
.Take(itemCount)
.ToList();

我在上述查询中包括所有州的城市,但我想在 Take 方法之后和 ToList 方法之前的查询末尾包含它。意味着假设查询返回 50 条记录,我只想为这 50 条记录包含城市到州,而不是上述查询中的所有州。有人可以帮助我如何做到这一点吗?任何帮助都会非常明显。这只是虚拟查询,我想从性能的角度这样做。提前致谢

【问题讨论】:

  • 您只想要 50 个州,还是想要所有州但只想要前 50 个城市?
  • 你能发布真正的查询吗?这个不起作用,因为您正在编写 Where 查询 re: states 但您正在使用 Countries 查询。

标签: c# entity-framework-4.1


【解决方案1】:

在查询中输入Include 没有区别。它只是一个行为修饰符,在你看到它的那一刻它不会被执行。只要你在IQueryable上操作Include无论放在哪里都会有同样的效果。

【讨论】:

    【解决方案2】:

    您是否忘记为您的代码导入 System.Data.Entity 命名空间?看看这个

    How to use Include() after OfType()?

    无论如何,我认为您的代码都可以。 ToList 之前的所有方法都将返回 IQueryable 或类似的东西。这意味着它是惰性评估。因此,无论方法的调用顺序如何,您都将获得相同的性能。

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2011-07-23
      相关资源
      最近更新 更多