如何避免在Entity Framework模型中获取所有关系

时间:2018-01-08 11:07:24

标签: entity-framework relationship

我正在开发一个迁移应用程序,而且由于源模型之间的关系很大,我在OutOfMemory上遇到了问题。

更好地解释一个例子:

  • EntityA有6个关系(EntityB,EntityC,EntityD ...)。
  • EntityB有8个关系......
  • EntityB1有3个关系......

继续这样。

然后问题是,当您尝试获取所有信息并执行所有过程时,应用程序将抛出OutOfMemory异常。

我想知道我是否可以避免某种关系,或者如果不可能避免所有关系。 (编程)

提前致谢

1 个答案:

答案 0 :(得分:2)

您正在搜索禁用延迟加载。

  

延迟加载意味着当您第一次访问查询中的属性时,将自动且透明地加载实体。

使用EDMX,您可以禁用它编辑其属性(.edmx文件上的F4)。 enter image description here

首先使用Code,您可以使用以下行:

dbContext.Configuration.LazyLoadingEnabled = false;

现在您已将其停用,您必须在查询中包含您需要的关系:

dbContext.MyEntity.Include(p=> p.MyRelationProperty)
                  .Include(p=> p.MyOtherRelationProperty)
                  [...]
                  .ToList();

OR

dbContext.MyEntity.Include("MyRelationProperty")
                  .Include("MyRelationProperty.MySubRelationProperty")
                  .Include("MyOtherRelationProperty")
                  [...]
                  .ToList();