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();
                }
            }
        }
Example #2
0
        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);
        }
Example #4
0
        public virtual void CreateOrMigrateForTenant(StudioXTenantBase tenant, Action <TDbContext> seedAction)
        {
            if (tenant.ConnectionString.IsNullOrEmpty())
            {
                return;
            }

            CreateOrMigrate(tenant, seedAction);
        }
Example #5
0
 public virtual void CreateOrMigrateForTenant(StudioXTenantBase tenant)
 {
     CreateOrMigrateForTenant(tenant, null);
 }