【问题标题】:Can you create a sub DbContext from another DbContext in EntityFramework Core?您可以从 EntityFramework Core 中的另一个 DbContext 创建一个子 DbContext 吗?
【发布时间】:2022-01-23 06:18:35
【问题描述】:
假设我有一个现有的 DbContext,有没有办法创建另一个使用该 DbContext 的 DbContext?
基本上,我有兴趣将不同的 DbContext 暴露给不同的应用程序,但希望它们都能从原始 DbContext 中工作。
这可用于版本控制、安全性等。
我可以创建不同的 DTO,但是我会失去很多 IQueryable 的功能。
【问题讨论】:
标签:
c#
api
.net-core
entity-framework-core
dbcontext
【解决方案1】:
我不确定我的理解是否正确,但是您使用同一个应用程序(假设是不同的数据库)注册了另一个像这样的数据库上下文
services.AddDbContext<ApplicationDbContext2>(
options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
并且您按照定义 #1 的方式定义它。
让我担心的是:
我有兴趣将不同的 DbContext 暴露给不同的
应用程序,但希望它们都在原始 DbContext 中工作
Dbcontext 在您的应用程序中定义以跟踪您的应用程序的状态。如果应用程序的状态依赖于其他应用程序,那么您正在谈论微服务,您需要使用其他工具告诉您的应用程序更新自己的状态。例如,您可以调用端点(最好通过 gRPC)或使用事件总线。
我们过去常常在应用程序之间共享数据库(有些仍然这样做),但这不是一个好主意,因为一个应用程序的数据库更改可能会导致其他相关应用程序出现错误。