EF:如何正确渴望负载关联

莱奥特萨列夫

我在应用程序中使用EF进行数据访问。数据模型(大大简化):

class Project 
{
  virtual ICollection<Foo> Foos {get;set;}
  virtual ICollection<Bar> Bars {get;set;}
  // actually I have many more kinds of Project's data
}

class Foo 
{
  virtual Project Project {get;set;}
  virtual ICollection<Bar> LinkedBars {get;set;}
  //And they are greatly intervened with each other
}
//etc etc.

重点是:

  • 所有的FooBar等等等等有相互之间的引用
  • 该引用永不离开Project,即以下始终正确:foo.Bars.All(bar => bar.Project == foo.Project) == true

我加载项目如下:

var project = Db.Set<Project>
              .Include(p => p.Foos)
              .Include(p => p.Bars);

因此,在那之后,如果我访问某些文件,则会foo.Bars触发延迟加载。这是预期的,毕竟,我已经即时加载所有需要的数据ProjectFoo并且Bar,而不是Foo_Bar链接表。

让我们修改一下:

var project = Db.Set<Project>
              .Include(p => p.Foos.Select(f => f.Bars))
              .Include(p => p.Bars);

现在我已经在内存中存储了所有必需的数据,但是(!)生成的SQL显然不是最佳的。其实,EF是装载ProjectFooFoo_Bar桌子和扫描Bar两次-一次为p.Bars和一次foo.Bars。所以,我不能不渴望加载foo.Bar_Ids就渴望加载foo.Bars,可以吗?

我该怎么做才能改善?

莱奥特萨列夫

据我所知只有这样,才能获得这个声明Foo_Bars作为明确的联系表(不是EF6自动生成的),并且Include

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF:如何正确渴望负载关联

来自分类Dev

如何渴望在铁轨中正确进行载荷关联?

来自分类Dev

渴望负载间接关联Rails

来自分类Dev

我如何渴望加载多个关联?

来自分类Dev

has_many关联中的Rails渴望负载标识符

来自分类Dev

用渴望的关联加载entitymanagerFactory

来自分类Dev

渴望获取和过滤关联

来自分类Dev

仅在记录类型为“员工”时如何渴望加载关联

来自分类Dev

如何有效地更新Rails中的关联集合(渴望加载)

来自分类Dev

Laravel>有限制的嵌套渴望负载

来自分类Dev

EF渴望加载包括多个

来自分类Dev

实体框架渴望负载不返回数据,延迟负载

来自分类Dev

CakePHP关联:如何正确检索所有hasMany关联?

来自分类Dev

ActiveRecord渴望加载多个belongs_to关联

来自分类Dev

通过表将渴望的加载关联起来

来自分类Dev

条件-渴望获取关联对象的属性

来自分类Dev

如何对关联数组正确使用implode()

来自分类Dev

如何做ejabberd集群负载均衡的正确方法?

来自分类Dev

EF6渴望在POCO内加载

来自分类Dev

如何在渴望加载的ASP.NET MVC中的EF6中包括导航属性的多个导航属性?

来自分类Dev

@RequestBody批注如何正确工作以及如何与HttpMessageConverter接口关联?

来自分类Dev

如何在增加渴望的负载的同时解决此错误?“ ERROR ThreadError:尝试解锁由另一个线程锁定的互斥锁”

来自分类Dev

如何使用 Azure PowerShell 将 VM 规模集与负载均衡器相关联

来自分类Dev

如何防止渴望评估?

来自分类Dev

渴望加载单个ORM对象的一些关联

来自分类Dev

渴望加载多态关联的第一条记录

来自分类Dev

Rails活动记录渴望加载不会加载关联

来自分类Dev

实体框架渴望加载关联的集合,但不会延迟加载

来自分类Dev

渴望加载与关联实体的多对多关系-实体框架

Related 相关文章

  1. 1

    EF:如何正确渴望负载关联

  2. 2

    如何渴望在铁轨中正确进行载荷关联?

  3. 3

    渴望负载间接关联Rails

  4. 4

    我如何渴望加载多个关联?

  5. 5

    has_many关联中的Rails渴望负载标识符

  6. 6

    用渴望的关联加载entitymanagerFactory

  7. 7

    渴望获取和过滤关联

  8. 8

    仅在记录类型为“员工”时如何渴望加载关联

  9. 9

    如何有效地更新Rails中的关联集合(渴望加载)

  10. 10

    Laravel>有限制的嵌套渴望负载

  11. 11

    EF渴望加载包括多个

  12. 12

    实体框架渴望负载不返回数据,延迟负载

  13. 13

    CakePHP关联:如何正确检索所有hasMany关联?

  14. 14

    ActiveRecord渴望加载多个belongs_to关联

  15. 15

    通过表将渴望的加载关联起来

  16. 16

    条件-渴望获取关联对象的属性

  17. 17

    如何对关联数组正确使用implode()

  18. 18

    如何做ejabberd集群负载均衡的正确方法?

  19. 19

    EF6渴望在POCO内加载

  20. 20

    如何在渴望加载的ASP.NET MVC中的EF6中包括导航属性的多个导航属性?

  21. 21

    @RequestBody批注如何正确工作以及如何与HttpMessageConverter接口关联?

  22. 22

    如何在增加渴望的负载的同时解决此错误?“ ERROR ThreadError:尝试解锁由另一个线程锁定的互斥锁”

  23. 23

    如何使用 Azure PowerShell 将 VM 规模集与负载均衡器相关联

  24. 24

    如何防止渴望评估?

  25. 25

    渴望加载单个ORM对象的一些关联

  26. 26

    渴望加载多态关联的第一条记录

  27. 27

    Rails活动记录渴望加载不会加载关联

  28. 28

    实体框架渴望加载关联的集合,但不会延迟加载

  29. 29

    渴望加载与关联实体的多对多关系-实体框架

热门标签

归档