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

本文关键字:DbContext 实体 框架 何时 | 更新日期: 2023-09-27 18:10:28

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

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

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

这些上下文中只有几个DbSet属性。

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

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

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

欢迎指教

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

在阅读了其他用户提供的所有链接后,我想我应该分享我的结论。

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

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

决定在整个系统中使用单个DbContext,使用MEF和这个问题的解决方案(MEF插件和EF CodeFirst -如何?)我可以很容易地操作单个DbContext来处理插件中定义的其他实体。

目前一切都很好,尽管我读到过大型DbContext的性能很差——继续前进,根据实体的数量和单个DbContext的性能,我可能会很好地重构成一系列较小的DbContext,并拥有一个包含所有内容的DbContext来管理数据库同步。

希望这对有同样问题的人有帮助