我希望为写入启用一个启用延迟加载的dbcontext,并为读取禁用另一个延迟加载的dbcontext。两者都应该在同一个模型上工作。我想在将延迟加载设置构造到服务类之后注入2个dbcontexts,并在适当的时候使用它们中的每一个。
这甚至可能吗?
我想我试图避免在服务方法中将lazyloading设置为false。
答案 0 :(得分:0)
你可以,但这可能是一个坏主意。您将无法使用从一个上下文中检索到的实体与另一个上下文(不是直接)。要写入使用“读取”上下文检索的实体,您必须使用“写入”上下文再次读取它以便对其进行修改。
相反,您可以在使用上下文之前根据需要启用或禁用延迟加载。
DbContext.Configuration.LazyLoadingEnabled = false; //or true
您可以通过简单地定义用于设置LazyLoading属性的自定义构造函数来简化它。
public MyDbContext(bool LazyLoad)
: base(nameOrConnectionString: "MyDbContext") {
this.Configuration.LazyLoadingEnabled = LazyLoad;
}
如果你真的需要,你可以继承你的DbContext并在构造函数中设置LazyLoading,但这似乎是一个坏主意。