如何在Entity Framework 4中默认禁用延迟加载?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

EF4默认启用延迟加载。

在我的项目中:

dataContext.ContextOptions.LazyLoadingEnabled

默认情况下为true。我不想延迟加载:

dataContext.ContextOptions.LazyLoadingEnabled = false;

那么有没有办法在整个项目中默认关闭它?

提问于
用户回答回答于

以下答案指的是数据库优先模型优先工作流程(Entity Framework(版本<= 4.0)中只有两个工作流程可用)。

edmx文件在<ConceptualModel><EntityContainer>定义中有一个用于延迟加载的属性,可以将延迟加载设置为false:

<EntityContainer Name="MyEntitiesContext" annotation:LazyLoadingEnabled="false">

这会在ObjectContext构造函数中创建以下设置:

public MyEntitiesContext() : base("name=MyEntitiesContext", "MyEntitiesContext")
{
    this.ContextOptions.LazyLoadingEnabled = false;
    OnContextCreated();
}

我的例子不意味着应该手动编辑生成的ObjectContext(或DbContext更新的EF版本),但EDMX文件部分的EntityContainer元素edmx:ConceptualModels应该通过添加annotation:LazyLoadingEnabled="false"属性来进行编辑

无论是在XML编辑器中手动还是在设计器表面的属性页面上(该选项可用)。对EDMX文件的这种修改将自动生成上面的构造函数中带有禁用的延迟加载选项的上下文类。从数据库更新模型时,EDMX文件修改本身不会被覆盖。

用户回答回答于

在代码优先模型中实现你想要的只是将一行添加到DbContext的构造函数中,如下所示:

public BlogContext()
{
    this.Configuration.LazyLoadingEnabled = false;
}

所属标签

可能回答问题的人

  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • Richel

    8 粉丝0 提问4 回答
  • 骑牛看晨曦

    4 粉丝522 提问3 回答
  • 发条丶魔灵1

    6 粉丝525 提问3 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励