何时在实体框架中使用多个DbContext?

时间:2014-06-27 14:34:53

标签: c# entity-framework mef

DbContext具有反映数据库中不同实体集的属性。

我正在使用一个使用MEF的插件架构,并且已经阅读了类似的SO问题,回答了我的问题的一部分(MEF Plugins and EF CodeFirst - How?

但是在我的核心应用程序中,我有多个DbContext(衍生物)将一些实体组合在一起。例如SecurityDbContext ConfigurationDbContext

这些上下文中只包含一些DbSet属性。

我引用的文章提供了一种方法,通过该方法,您可以使用一个中央DbContext并在插件库中配置模型。这意味着整个应用程序和插件都有一个DbContext。

我知道EF6每个数据库支持多个DbContexts - 这是否意味着我可以根据需要创建尽可能多的DbContexts - 包括在插件中?

我假设DbContext只能(在查询中)加入到其中定义的实体,而不管DbContext是否用于同一个DB。

任何建议表示赞赏

1 个答案:

答案 0 :(得分:0)

我想在阅读其他用户提供的所有链接后,我会得出结论。

很明显,我创建的DbContext类没有包含足够的实体,因为我发现自己使用了辅助函数,我将其编写为从其他上下文中分离实体对象,以便它们可以附加到其他上下文

我遇到的下一个问题是如何在插件中处理DbContexts。该插件可能需要使用“核心”实体,但也需要定义自己的实体。

决定对整个系统使用单个DbContext,使用MEF和这个问题的解决方案(MEF Plugins and EF CodeFirst - How?)我可以轻松地操作单个DbContext来处理插件中定义的其他实体。

目前一切都运行良好,虽然我读过大型DbContexts的性能不佳 - 前进,取决于单个DbContext的实体数量和性能我可能会重构为一系列较小的DbContexts并且有一个DbContext,其中包含用于管理数据库同步的所有内容。

希望这有助于有同样问题的人