gpt4 book ai didi

entity-framework - 在 Entity Framework 4 中默认禁用延迟加载

转载 作者:行者123 更新时间:2023-12-03 05:41:25 25 4
gpt4 key购买 nike

EF4 中似乎默认启用了延迟加载。至少,在我的项目中,我可以看到

dataContext.ContextOptions.LazyLoadingEnabled

默认为 true。我不想延迟加载,也不想写:

dataContext.ContextOptions.LazyLoadingEnabled = false;

每次我得到一个新的上下文。那么有没有办法在整个项目中默认关闭它?

最佳答案

以下答案涉及数据库优先模型优先工作流程( Entity Framework (版本 <= 4.0)中唯一可用的两个工作流程,当问题被问)。如果您使用代码优先工作流程(自 EF 版本 >= 4.1 起可用),请继续访问 ssmith 的 answer对此问题寻求正确的解决方案。

<小时/>

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 版本中)应手动编辑(正如 ctorx 指出的那样,这将被数据库中的每个模型更新覆盖),但 EntityContainer edmx:ConceptualModels 中的元素应通过添加 annotation:LazyLoadingEnabled="false" 来编辑 EDMX 文件的部分属性 - 可以在 XML 编辑器中手动设置,也可以在设计器界面的属性页面上设置此选项,右键单击 EDMX,然后单击“属性”。

enter image description here

对 EDMX 文件的修改将自动生成上下文类,并在构造函数中禁用延迟加载选项,如上所示。从数据库更新模型时,EDMX 文件修改本身不会被覆盖。

关于entity-framework - 在 Entity Framework 4 中默认禁用延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2967214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com