.net具有单个数据库上下文和存储库的多个数据库



我正在尝试实现一种拥有多个数据库(相同的数据库,都有相同的表等(的方法,但我需要它们是分开的,因此需要多个数据库。是否有一种方法可以使用一个DBContext和存储库模式,该模式可以与控制器中的所有DBContext或存储库(具有不同连接字符串(进行交互。

(所有数据库都是相同的,只是数据库名称不同(

Ex。我有3个控制器/端点api/course1api/course2api/course3每个课程都有一个数据库。我一直在看各种文档,但在如何使用存储库模式完成它方面遇到了困难。

谢谢!

是的,您可以根据当前请求使用不同的连接字符串。在startup.cs中,将配置DbContext的代码更改为类似于以下示例的代码:

services.AddDbContext<ApplicationDbContext>((serviceProvider, options) =>
{
var httpContext = serviceProvider.GetRequiredService<IHttpContextAccessor>().HttpContext;
var routeData = httpContext.GetRouteData();
string connectionString;
// insert here code to determine connection string based on route data.
options.UseSqlServer(
connectionString
);
});

在这里,我使用依赖注入来获取有关当前请求和路由数据的信息,以确定连接字符串。您可以使用任何您想要的服务和任何您想要确定connectionString的逻辑。

然后,当ApplicationDbContext被注入到存储库类或控制器中时,它将为该请求使用该连接字符串。

最新更新