如何解决.net具有单个dbcontext和存储库的多个数据库
我正在尝试实现一种具有多个数据库(相同的数据库,所有的数据库都具有相同的表等)的方法,但是我需要将它们分开,从而具有多个DB。有没有一种方法可以使单个DBContext和存储库模式可以与控制器中的所有DBContext和存储库模式(具有不同的连接字符串)进行交互。
例如我有3个控制器/端点api/course1
,api/course2
和api/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注入到存储库类或控制器中时,它将对该请求使用该连接字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。