asp.net-core - 如何在 mvc core 2.2 中为每个用户使用不同的 DbContext
问题描述
我有一些公司和很多用户。现在我需要每个公司有一个数据库。
必须在 MVC Core 中解决这个问题。和控制 DI
解决方案
您需要像这样创建几个 DataBaseContext 类
using Microsoft.EntityFrameworkCore;
namespace Data.Models
{
public class FirstDataContext: DbContext
{
public DbSet<User> Users{ get; set; }
public FirstDataContext(DbContextOptions<FirstDataContext> options)
: base(options)
{
}
}
public class SecondDataContext : DbContext
{
public DbSet<User> Users{ get; set; }
public SecondDataContext(DbContextOptions<SecondDataContext> options)
: base(options)
{
}
}
}
然后在 appsettings.json 添加几个包含数据库地址的连接字符串
{
"ConnectionStrings": {
"FirstCompany": "Server=(localdb)\\mssqllocaldb;Database=company1;Trusted_Connection=True;"
},
"SecondCompany": "Server=(localdb)\\mssqllocaldb;Database=company2;Trusted_Connection=True;"
},
}
然后转到 StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
string FirstCompany= Configuration.GetConnectionString("FirstCompany");
string SecondCompany= Configuration.GetConnectionString("SecondCompany");
services.AddDbContext<FirstDataContext>(options =>
options.UseSqlServer(connection));
services.AddDbContext<SecondDataContext>(options =>
options.UseSqlServer(connection));
services.AddMvc();
}
迪:
public class HomeController: Controller
{
FirstDataContext fdcntxt;
SecondDataContext sdcntxt;
public HomeController (FirstDataContext fdcntxt, SecondDataContext sdcntxt)
{
this.fdcntxt = fdcntxt;
this.sdcntxt = sdcntxt;
}
}
我认为这应该可行)。
推荐阅读
- google-chrome - 旧的 Internet 快捷方式路径需要指向新的 64 位 Chrome
- c# - MS Graph SDK 如何将架构扩展属性添加/更新到用户对象
- javascript - 使用 react js 在主组件中渲染组件时出现错误
- javascript - JavaScript foreach 对象
- node.js - NodeJs Rest API 异常场景处理
- anaconda - 我可以在kali linux中安装Rstudio吗?
- django - 从 docker 运行 celery 时失败
- android - 如何停止以自定义意图启动的 Android 服务
- python - Numpy log on division with 0 in numerator gives "divide by zero" warning
- django - 在 django 视图中对 api 的异步请求