protected virtual void CreateOrMigrate(TenantBase tenant) { var args = new DbPerTenantConnectionStringResolveArgs( tenant == null ? (int?)null : (int?)tenant.Id, tenant == null ? MultiTenancySides.Host : MultiTenancySides.Tenant ); args["DbContextType"] = typeof(TDbContext); args["DbContextConcreteType"] = typeof(TDbContext); var nameOrConnectionString = ConnectionStringHelper.GetConnectionString(_connectionStringResolver.GetNameOrConnectionString(args)); using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { using (var dbContext = _iocResolver.ResolveAsDisposable <TDbContext>(new { nameOrConnectionString = nameOrConnectionString })) { var dbInitializer = new MigrateDatabaseToLatestVersion <TDbContext, TConfiguration>( true, new TConfiguration { Tenant = tenant }); dbInitializer.InitializeDatabase(dbContext.Object); _unitOfWorkManager.Current.SaveChanges(); uow.Complete(); } } }
protected virtual void CreateOrMigrate(AbpTenantBase tenant) { var args = new DbPerTenantConnectionStringResolveArgs( tenant == null ? (int?)null : (int?)tenant.Id, tenant == null ? MultiTenancySides.Host : MultiTenancySides.Tenant ); args["DbContextType"] = typeof(TDbContext); args["DbContextConcreteType"] = typeof(TDbContext); var nameOrConnectionString = ConnectionStringHelper.GetConnectionString(_connectionStringResolver.GetNameOrConnectionString(args)); using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { using (var dbContext = _iocResolver.ResolveAsDisposable <TDbContext>(new { nameOrConnectionString = nameOrConnectionString })) { //TODO: Please comple the logic of migrations dbContext.Object.Database.Migrate(); _unitOfWorkManager.Current.SaveChanges(); uow.Complete(); } } }
protected virtual void CreateOrMigrate(CodeZeroTenantBase tenant, Action <TDbContext> seedAction) { var args = new DbPerTenantConnectionStringResolveArgs( tenant == null ? (int?)null : (int?)tenant.Id, tenant == null ? MultiTenancySides.Host : MultiTenancySides.Tenant ); args["DbContextType"] = typeof(TDbContext); args["DbContextConcreteType"] = typeof(TDbContext); var nameOrConnectionString = ConnectionStringHelper.GetConnectionString( _connectionStringResolver.GetNameOrConnectionString(args) ); using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { using (var dbContext = _dbContextResolver.Resolve <TDbContext>(nameOrConnectionString, null)) { dbContext.Database.Migrate(); seedAction?.Invoke(dbContext); _unitOfWorkManager.Current.SaveChanges(); uow.Complete(); } } }
/// <summary> /// Update the database /// </summary> private void CreateOrMigrate(AbpTenantBase tenant, Action seedAction) { var args = new DbPerTenantConnectionStringResolveArgs( tenant == null ? (int?)null : (int?)tenant.Id, tenant == null ? MultiTenancySides.Host : MultiTenancySides.Tenant ); //args["DbContextType"] = typeof(TDbContext); //args["DbContextConcreteType"] = typeof(TDbContext); var connectionString = GetConnectionString( _connectionStringResolver.GetNameOrConnectionString(args) ); // Put the database update into a scope to ensure // that all resources will be disposed. using var scope = CreateServices(connectionString).CreateScope(); // Instantiate the runner var runner = scope.ServiceProvider.GetRequiredService <IMigrationRunner>(); try { // Execute the migrations runner.MigrateUp(); } catch (Exception e) { throw; } }
public virtual string GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args) { if (args.TenantId == null) { //Requested for host return(base.GetNameOrConnectionString(args)); } var tenantCacheItem = _tenantCache.Get(args.TenantId.Value); if (tenantCacheItem.ConnectionString.IsNullOrEmpty()) { //Tenant has not dedicated database return(base.GetNameOrConnectionString(args)); } return(tenantCacheItem.ConnectionString); }
public async Task <string> GetNameOrConnectionStringAsync(DbPerTenantConnectionStringResolveArgs args) { return(await Task.FromResult(GetNameOrConnectionString(args))); }
public string GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args) { return(_nhModule.ConnectionString); }
public override string GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args) { return(base.GetNameOrConnectionString(args)); }