Asp.net mvc 在.Net Core中具有独立数据库的多租户系统
我正在尝试创建实现每个租户的数据库策略。但我不明白我实际上将如何做到这一点。我遵循了这个链接,但我使用asp.net核心MVC。我是一个绝对的初学者。我如何为不同的用户创建一个单独的数据库。请提供帮助。不确定您的模型设计如何,但您需要的是如何在项目中创建和使用多个数据库 您可以按照以下步骤操作:Asp.net mvc 在.Net Core中具有独立数据库的多租户系统,asp.net-mvc,asp.net-core,asp.net-core-mvc,asp.net-core-2.2,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.2,我正在尝试创建实现每个租户的数据库策略。但我不明白我实际上将如何做到这一点。我遵循了这个链接,但我使用asp.net核心MVC。我是一个绝对的初学者。我如何为不同的用户创建一个单独的数据库。请提供帮助。不确定您的模型设计如何,但您需要的是如何在项目中创建和使用多个数据库 您可以按照以下步骤操作: 创建第一个数据库 模型设计: public class Account { public int Id { get; set; } public string Name { get;
- 创建第一个数据库
- 模型设计:
public class Account { public int Id { get; set; } public string Name { get; set; } }
- 创建数据库上下文:
public class FirstContext : DbContext { public FirstContext (DbContextOptions<FirstContext> options) : base(options) { } public DbSet<Account> Account { get; set; } }
public class SecondContext : DbContext { public SecondContext(DbContextOptions<FirstContext> options) : base(options) { } public DbSet<User> User { get; set; } }
- 配置Startup.cs:
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); //add this... services.AddDbContext<FirstContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FirstContext"))); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }
6.然后您可以在services.AddDbContext<FirstContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FirstContext"))); //add this... services.AddDbContext<SecondContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SecondContext")));
->(localdb)\MSSQLLocalDB
SQL Server对象资源管理器中的
数据库中找到数据库(在菜单选项卡打开
视图中选择
):SQL Server对象资源管理器
- 创建第二个数据库
重复1-4个步骤:
型号:
DbContext:public class User { public int Id { get; set; } public string Name { get; set; } }
public class FirstContext : DbContext { public FirstContext (DbContextOptions<FirstContext> options) : base(options) { } public DbSet<Account> Account { get; set; } }
Startup.cs:public class SecondContext : DbContext { public SecondContext(DbContextOptions<FirstContext> options) : base(options) { } public DbSet<User> User { get; set; } }
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); //add this... services.AddDbContext<FirstContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FirstContext"))); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }
services.AddDbContext<FirstContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FirstContext"))); //add this... services.AddDbContext<SecondContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SecondContext")));
- 有关如何获取不同的用户数据:
public class AccountsController : Controller { private readonly FirstContext _context; private readonly SecondContext _context2; public AccountsController(FirstContext context, SecondContext context2) { _context = context; _context2 = context2; } public async Task<IActionResult> Index() { var user1 = _context.Account.ToList(); var user2 = _context2.User.ToList(); return View(); } }
公共类帐户控制器:控制器 { 私有只读第一上下文\u上下文; 私有只读SecondContext_context2; 公共帐户控制器(第一个上下文,第二个上下文2) { _上下文=上下文; _context2=context2; } 公共异步任务索引() { var user1=_context.Account.ToList(); var user2=_context2.User.ToList(); 返回视图(); } }