.net 超过1个DBContext,有什么建议吗?

.net 超过1个DBContext,有什么建议吗?,.net,entity-framework,core,.net,Entity Framework,Core,我们从一个应用程序开始,我们期望800多个表(在一个DB中),我想保留超过1个DbContext类,可以吗?有什么建议吗 是的,这很好,我经常这样做有几个原因: 我不控制数据库托管,所以我有一个混合概念(日志/域/事件)的大型数据库,因此每个上下文可以表示不同的实体组和更好的隔离 即使我控制了数据库服务器,我也可以在本地使用单个数据库,但在qa=>prod中使用不同的数据库/服务器 如果您正确地建模和使用EF,EF将正确地处理问题。除了非常简单的应用程序外,默认值大于1。DbContext不

我们从一个应用程序开始,我们期望800多个表(在一个DB中),我想保留超过1个DbContext类,可以吗?有什么建议吗

是的,这很好,我经常这样做有几个原因:

  • 我不控制数据库托管,所以我有一个混合概念(日志/域/事件)的大型数据库,因此每个上下文可以表示不同的实体组和更好的隔离

  • 即使我控制了数据库服务器,我也可以在本地使用单个数据库,但在qa=>prod中使用不同的数据库/服务器


如果您正确地建模和使用EF,EF将正确地处理问题。

除了非常简单的应用程序外,默认值大于1。DbContext不是数据库,它表示在特定用例中使用的实体。EF和所有ORM都处理实体,而不是表。这些实体被映射到表,但它们不镜像表。有时一个上下文可以处理多个情况,但有时所需的实体完全不同,即使它们最终使用同一个表。这是否回答了您的问题?在域驱动的设计术语中,您会说一个有界域上下文应该有自己的DbContext,映射自己的实体我可以在GET调用中提取数据时引用2个DbContext的实体吗?不是在同一个查询中。每个LINQ查询都由一个DbContext实例解释和执行,因此,如果该实体由另一个实例管理,则执行实例将抛出一个错误,用于代码优先迁移的大型DbContext和较小的DbContext类型,以及应用程序中使用的非不相交的实体子集。