zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
        }
  • 相关阅读:
    A*算法在栅格地图上的路径搜索(python实现)_1.1
    python基础
    Celery ---异步任务,定时任务,周期任务
    Flask-Script
    Flask-SQLAlchemy
    SQLAlchemy的增删改查 一对多 多对多
    Django Rest framework
    django之forms组件
    缓存, 队列(Redis,RabbitMQ)
    django框架(2)
  • 原文地址:https://www.cnblogs.com/w2011/p/7772991.html
Copyright © 2011-2022 走看看