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();
                    }
                }
            }
        }
  • 相关阅读:
    IOS第一天
    Mac环境下svn的使用
    惯用代码
    ORA-12170: TNS: 连接超时
    java字符集
    java移位运算
    mysql面试题
    mysql覆盖索引(屌的狠,提高速度)
    Cannot call sendError() after the response has been committed
    maven生命周期
  • 原文地址:https://www.cnblogs.com/w2011/p/7772991.html
Copyright © 2011-2022 走看看