C# 如何通过代码在运行时添加迁移
我在rum时代表其他Db连接的条件更改Db上下文,所以问题是,如果数据库不存在,我们无法通过代码在运行时创建数据库C# 如何通过代码在运行时添加迁移,c#,model-view-controller,.net-core,C#,Model View Controller,.net Core,我在rum时代表其他Db连接的条件更改Db上下文,所以问题是,如果数据库不存在,我们无法通过代码在运行时创建数据库 public void ConfigureServices(IServiceCollection services) { services.AddDbContext<TenantsDbContext>(options => options.UseSqlServer(Configuration.Ge
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TenantsDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")))
services.AddDbContext<MultitenantDbContext>();
// for dependency.
services.AddTransient<ITenantProvider, DatabaseTenantProvider>();
.AddEntityFrameworkStores<MultitenantDbContext>()
.AddDefaultTokenProviders();
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”))
services.AddDbContext();
//因为依赖。
services.AddTransient();
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
}
并在运行时更改数据库连接
public MultitenantDbContext(DbContextOptions<MultitenantDbContext> options,
ITenantProvider tenantProvider) : base(options)
{
_tenantProvider = tenantProvider;
_connectionString = @"Server=Test\SQL2017;Database=" + _tenantProvider.GetTenantId() + ";User ID=sa;Password=123;";
}
public MultitenantDbContext(DbContextOptions选项,
ITenantProvider租户提供程序):基本(选项)
{
_租户提供者=租户提供者;
_connectionString=@“Server=Test\SQL2017;Database=“+\u tenantProvider.GetTenantId()+”;用户ID=sa;密码=123;
}
我想您可以只dbContext.Migrate()代码>
此外,您还可以使用dbContext.encurecreated()代码>。它将检查数据库是否存在,如果不存在,将进行迁移。public void ConfigureServices(iSeries收集服务)
public void ConfigureServices(IServiceCollection services)
{
...
using (var scope = sp.CreateScope())
{
var scopedServices = scope.ServiceProvider;
var appDb = scopedServices.GetRequiredService<MultitenantDbContext>();
appDb.Database.Migrate();
}
}
{
...
使用(var scope=sp.CreateScope())
{
var scopedServices=scope.ServiceProvider;
var appDb=scopedServices.GetRequiredService();
appDb.Database.Migrate();
}
}
从规范Migrate()
:
请注意,此API与
DbContext.Database.Recreated()。“重新创建”不使用
迁移以创建数据库,从而创建
无法在以后使用迁移更新创建的
所以appDb.Database.Migrate()代码>就足够了。如果数据库不存在,它将创建数据库,并将运行每个挂起的迁移