有了上面的事情之后,我们就可以或许举办数据库迁移并更新到数据库了,主要进程分为2步Add-Migration XXX和Update-Database -verbose两步,只不外是此刻我们想构建多个DbContext,所以我们需要通过参数-c xxxDbContext来指定详细的DbContext ,不然会报下面的错误。More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and the '--context' parameter for dotnet commands.
有了这些今后,我们就可以更新到数据库了,在更新的时候记着要指定DbContext,更新时利用下面的呼吁:Update-Database -verbose -c XXXDbContext。
4 建设第二个DbContext有了前面的进程,建设第二个DbContext的进程就较量简朴了,反复上面的步调一、二、三,然后完成第二个DbContext的建设和数据库的迁移,可是这里我们需要留意一些差异之处,第一个由于我们想要利用ABP框架中的多租户相关的一些实体,所以这里我们构建的基类是担任自AbpZeroDbContext,后头我们建设的业务相关的DbContext的时候,我们不需要这些,所以我们只需简朴担任自AbpDbContext即可。
5 Startup中初始化EF Core DbContext这个和之前建设一个DbContext有所差异的是我们需要向Asp.Net Core依赖注入容器中两次注入差异的DbContext,在Asp.Net Core中该如何建设DbContext并实现注入,请点击这里参考,在这里我们需要在Startup中的ConfigureServices中挪用下面的代码,这个是有所差异的处所,详细我们来看看代码。
// 初始化 EF Core DbContext var abpConnectionString = _appConfiguration.GetConnectionString("Default"); services.AddDbContext<SunlightDbContext>(options => { options.UseSqlServer(abpConnectionString); if (Environment.IsDevelopment()) { options.EnableSensitiveDataLogging(); // https://docs.microsoft.com/en-us/ef/core/querying/client-eval#optional-behavior-throw-an-exception-for-client-evaluation options.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)); } }); // AuthConfigurer.MapUserIdentity 需利用 DbContextOptions<SunlightDbContext> // Abp DI 未自动注册该工具,故而出格处理惩罚 services.AddTransient(provider => { var builder = new DbContextOptionsBuilder<SunlightDbContext>(); builder.UseSqlServer(abpConnectionString); return builder.Options; }); var dcsConnectionString = _appConfiguration.GetConnectionString("DcsEntity"); services.AddDbContext<DcsDbContext>(options => { options.UseSqlServer(dcsConnectionString); if (Environment.IsDevelopment()) { options.EnableSensitiveDataLogging(); // https://docs.microsoft.com/en-us/ef/core/querying/client-eval#optional-behavior-throw-an-exception-for-client-evaluation options.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)); } });