Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在.Net Core中具有独立数据库的多租户系统_Asp.net Mvc_Asp.net Core_Asp.net Core Mvc_Asp.net Core 2.2 - Fatal编程技术网

Asp.net mvc 在.Net Core中具有独立数据库的多租户系统

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;

我正在尝试创建实现每个租户的数据库策略。但我不明白我实际上将如何做到这一点。我遵循了这个链接,但我使用asp.net核心MVC。我是一个绝对的初学者。我如何为不同的用户创建一个单独的数据库。请提供帮助。

不确定您的模型设计如何,但您需要的是如何在项目中创建和使用多个数据库

您可以按照以下步骤操作:

  • 创建第一个数据库

  • 模型设计:

    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?}");
             });
         }
     }
    
    services.AddDbContext<FirstContext>(options =>
                         options.UseSqlServer(Configuration.GetConnectionString("FirstContext")));
    
     //add this...
    services.AddDbContext<SecondContext>(options =>
                         options.UseSqlServer(Configuration.GetConnectionString("SecondContext")));
    
    6.然后您可以在
    (localdb)\MSSQLLocalDB
    ->
    SQL Server对象资源管理器中的
    数据库中找到数据库(在菜单选项卡打开
    视图中选择
    SQL Server对象资源管理器
    ):

  • 创建第二个数据库

    重复1-4个步骤:

    型号:

    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    DbContext:

    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?}");
             });
         }
     }
    
    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();
    返回视图();
    }
    }
    

我想创建一个应用程序,不同的用户动态地拥有不同的数据库。这个独立的数据库将在任何用户注册时动态创建。我很感激。但我需要一些不同的东西。例如:“学生ID、学生姓名、电话号码”假设这些是模型。不同的学生有不同的“学生ID、学生姓名、电话号码”。当学生在注册后登录到他们的帐户时,他们会显示自己的姓名、Id和电话号码,而不会显示其他学生的详细信息。