我们可以使用相同的基础域模型的2个DbContexts吗?

时间:2014-02-03 19:30:40

标签: entity-framework dbcontext

我希望为写入启用一个启用延迟加载的dbcontext,并为读取禁用另一个延迟加载的dbcontext。两者都应该在同一个模型上工作。我想在将延迟加载设置构造到服务类之后注入2个dbcontexts,并在适当的时候使用它们中的每一个。

这甚至可能吗?

我想我试图避免在服务方法中将lazyloading设置为false。

1 个答案:

答案 0 :(得分:0)

你可以,但这可能是一个坏主意。您将无法使用从一个上下文中检索到的实体与另一个上下文(不是直接)。要写入使用“读取”上下文检索的实体,您必须使用“写入”上下文再次读取它以便对其进行修改。

相反,您可以在使用上下文之前根据需要启用或禁用延迟加载。

DbContext.Configuration.LazyLoadingEnabled = false; //or true

您可以通过简单地定义用于设置LazyLoading属性的自定义构造函数来简化它。

public MyDbContext(bool LazyLoad)
        : base(nameOrConnectionString: "MyDbContext") {
            this.Configuration.LazyLoadingEnabled = LazyLoad;
}

如果你真的需要,你可以继承你的DbContext并在构造函数中设置LazyLoading,但这似乎是一个坏主意。