首页 > 解决方案 > 如何在 mvc core 2.2 中为每个用户使用不同的 DbContext

问题描述

我有一些公司和很多用户。现在我需要每个公司有一个数据库。

必须在 MVC Core 中解决这个问题。和控制 DI

标签: asp.net-coremodel-view-controllerentity-framework-core

解决方案


您需要像这样创建几个 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;
          }
      }

我认为这应该可行)。


推荐阅读