Asp.Net Core中建设多DbContext并迁移到数据库的步调(2)

  有了上面的事情之后,我们就可以或许举办数据库迁移并更新到数据库了,主要进程分为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));                 }             }); 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjjpf.html