protected virtual void CreateOrMigrate(StudioXTenantBase 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(StudioXTenantBase tenant, Action <TDbContext> seedAction) { var args = new DbPerTenantConnectionStringResolveArgs( tenant == null ? (int?)null : (int?)tenant.Id, tenant == null ? MultiTenancySides.Host : MultiTenancySides.Tenant ) { ["DbContextType"] = typeof(TDbContext), ["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(); } } }
public virtual void CreateOrMigrateForTenant(StudioXTenantBase tenant) { if (tenant.ConnectionString.IsNullOrEmpty()) { return; } CreateOrMigrate(tenant); }
public virtual void CreateOrMigrateForTenant(StudioXTenantBase tenant, Action <TDbContext> seedAction) { if (tenant.ConnectionString.IsNullOrEmpty()) { return; } CreateOrMigrate(tenant, seedAction); }
public virtual void CreateOrMigrateForTenant(StudioXTenantBase tenant) { CreateOrMigrateForTenant(tenant, null); }