【发布时间】:2014-02-03 19:30:40
【问题描述】:
我想要一个为写入启用延迟加载的 dbcontext,另一个为读取禁用延迟加载的 dbcontext。两者都应该在同一个模型上工作。我想在使用延迟加载设置将 2 个 dbcontexts 构建到服务类中后注入它们,并在适当的情况下使用它们中的每一个。
这甚至可能吗?
我想我想避免在服务方法中将延迟加载设置为 false。
【问题讨论】:
标签: entity-framework dbcontext
我想要一个为写入启用延迟加载的 dbcontext,另一个为读取禁用延迟加载的 dbcontext。两者都应该在同一个模型上工作。我想在使用延迟加载设置将 2 个 dbcontexts 构建到服务类中后注入它们,并在适当的情况下使用它们中的每一个。
这甚至可能吗?
我想我想避免在服务方法中将延迟加载设置为 false。
【问题讨论】:
标签: entity-framework dbcontext
你可以,但这可能是个坏主意。您将无法将从一个上下文中检索到的实体与另一个上下文一起使用(无论如何都不能直接使用)。要写入使用“读取”上下文检索到的实体,您必须使用“写入”上下文再次读取它才能修改它。
相反,您可以在使用上下文之前根据需要简单地启用或禁用延迟加载。
DbContext.Configuration.LazyLoadingEnabled = false; //or true
您可以通过简单地定义一个自定义构造函数来设置 LazyLoading 属性来简化它。
public MyDbContext(bool LazyLoad)
: base(nameOrConnectionString: "MyDbContext") {
this.Configuration.LazyLoadingEnabled = LazyLoad;
}
如果你真的需要,可以子类化你的 DbContext 并在构造函数中设置 LazyLoading,但这似乎是个坏主意。
【讨论】: