使用 aspnetboilerplate 的 EF Core 迁移触发位置 context.Database.Migrate();
EF Core Migration with aspnetboilerplate Where to trigger context.Database.Migrate();
我需要确保我的应用程序本身能够升级他的数据库模型(应用迁移)
在ABP架构中,Migrate应该在哪里调用?
context.Database.Migrate();
因为这是对基础结构逻辑(Entity framework 核心)的调用,所以它应该远离域服务和应用程序服务。
提前致谢
您好,您可以在 EntityFrameworkCoreModule 的 PostInitialize 方法中执行数据库迁移。
public class MyApplicationEntityFrameworkCoreModule : AbpModule
{
public override void PostInitialize()
{
if (!SkipDbSeed)
{
SeedHelper.SeedHostDb(IocManager);
}
// --> You can execute migrations here <--
}
}
我终于找到了适用于 abp 4.3 的可行解决方案
此代码允许您的应用程序在启动时应用迁移。
public override void PostInitialize()
{
var dbContextProvider = IocManager.Resolve<IDbContextProvider<ExtranetDbContext>>();
var unitOfWorkManager = IocManager.Resolve<IUnitOfWorkManager>();
using (var unitOfWork = unitOfWorkManager.Begin())
{
var context = dbContextProvider.GetDbContext(MultiTenancySides.Host);
//Removes actual connection as it has been enlisted in a non needed transaction for migration
context.Database.CloseConnection();
context.Database.Migrate();
}
if (!SkipDbSeed)
{
SeedHelper.SeedHostDb(IocManager);
}
}
有关 IUnitOfWorkManager
的详细信息,请参见 here。
我需要确保我的应用程序本身能够升级他的数据库模型(应用迁移)
在ABP架构中,Migrate应该在哪里调用?
context.Database.Migrate();
因为这是对基础结构逻辑(Entity framework 核心)的调用,所以它应该远离域服务和应用程序服务。
提前致谢
您好,您可以在 EntityFrameworkCoreModule 的 PostInitialize 方法中执行数据库迁移。
public class MyApplicationEntityFrameworkCoreModule : AbpModule
{
public override void PostInitialize()
{
if (!SkipDbSeed)
{
SeedHelper.SeedHostDb(IocManager);
}
// --> You can execute migrations here <--
}
}
我终于找到了适用于 abp 4.3 的可行解决方案 此代码允许您的应用程序在启动时应用迁移。
public override void PostInitialize()
{
var dbContextProvider = IocManager.Resolve<IDbContextProvider<ExtranetDbContext>>();
var unitOfWorkManager = IocManager.Resolve<IUnitOfWorkManager>();
using (var unitOfWork = unitOfWorkManager.Begin())
{
var context = dbContextProvider.GetDbContext(MultiTenancySides.Host);
//Removes actual connection as it has been enlisted in a non needed transaction for migration
context.Database.CloseConnection();
context.Database.Migrate();
}
if (!SkipDbSeed)
{
SeedHelper.SeedHostDb(IocManager);
}
}
有关 IUnitOfWorkManager
的详细信息,请参见 here。