![](/img/trans.png)
[英]How to use Multiple DataContexts(DbContext) in a Repository .Net Web API
[英].net multiple databases with single dbcontext and repository
我正在嘗試實現一種擁有多個數據庫(相同的數據庫,都有相同的表等)的方法,但我需要將它們分開,因此多個數據庫。 有沒有辦法讓單個 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 被注入到您的存儲庫類或控制器中時,它將為該請求使用該連接字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.