DbContext具有反映数据库中不同实体集的属性。
我正在使用一个使用MEF的插件架构,并且已经阅读了类似的SO问题,回答了我的问题的一部分(MEF Plugins and EF CodeFirst - How?)
但是在我的核心应用程序中,我有多个DbContext(衍生物)将一些实体组合在一起。例如SecurityDbContext
ConfigurationDbContext
。
这些上下文中只包含一些DbSet
属性。
我引用的文章提供了一种方法,通过该方法,您可以使用一个中央DbContext并在插件库中配置模型。这意味着整个应用程序和插件都有一个DbContext。
我知道EF6每个数据库支持多个DbContexts - 这是否意味着我可以根据需要创建尽可能多的DbContexts - 包括在插件中?
我假设DbContext只能(在查询中)加入到其中定义的实体,而不管DbContext是否用于同一个DB。
任何建议表示赞赏
答案 0 :(得分:0)
我想在阅读其他用户提供的所有链接后,我会得出结论。
很明显,我创建的DbContext
类没有包含足够的实体,因为我发现自己使用了辅助函数,我将其编写为从其他上下文中分离实体对象,以便它们可以附加到其他上下文
我遇到的下一个问题是如何在插件中处理DbContexts。该插件可能需要使用“核心”实体,但也需要定义自己的实体。
决定对整个系统使用单个DbContext,使用MEF和这个问题的解决方案(MEF Plugins and EF CodeFirst - How?)我可以轻松地操作单个DbContext来处理插件中定义的其他实体。
目前一切都运行良好,虽然我读过大型DbContexts的性能不佳 - 前进,取决于单个DbContext的实体数量和性能我可能会重构为一系列较小的DbContexts并且有一个DbContext,其中包含用于管理数据库同步的所有内容。
希望这有助于有同样问题的人