ABP 数据迁移
我主要是在项目部署的时候、当添加一个租户的时候、那么租户是有一个单独的数据库。而我的并没有用多租户单数据库。
因此我的模块里面有一个领域事件 当租户添加时将生前表生成到对应的数据库中。如果那位网友有更好的方式请留言回复。
/// <summary> /// 当多租户信息添加时 /// 更新并且添加本地数据文件 /// </summary> public class TenancyEventsManager:ISingletonDependency, IEventHandler<EntityCreatedEventData<Tenant>>{ private readonly IIocResolver _iocResolver; private readonly IUnitOfWorkManager _unitOfWorkManager; public TenancyEventsManager(IIocResolver iocResolver, IUnitOfWorkManager unitOfWorkManager) { _iocResolver = iocResolver; _unitOfWorkManager = unitOfWorkManager; } public void HandleEvent(EntityCreatedEventData<Tenant> eventData) { //默认是加密、这里要解密连接字符串 string connection = SimpleStringCipher.Instance.Decrypt(eventData.Entity.ConnectionString); using (var uow=_unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { using (var dbContext = _iocResolver.ResolveAsDisposable<IMSDbContext>(new {nameOrConnectionString=connection})) { var dbInitializer = new MigrateDatabaseToLatestVersion<IMSDbContext, Migrations.Configuration>(true, new Configuration() { Tenant = eventData.Entity}); dbInitializer.InitializeDatabase(dbContext.Object); _unitOfWorkManager.Current.SaveChanges(); uow.Complete(); } } } }