private static void CreateShardMapDbWhereNeeded(MultiverseConfiguration conf, DbFacility database) { if (!database.Exists(conf.ShardMapManagerServerName, conf.ShardMapManagerDatabaseName).Result) { var created = database.CreateDatabase(conf.ShardMapManagerServerName, conf.ShardMapManagerDatabaseName, waitIsOnLine: true).Result; } }
private void CreateCommonShema(MultiverseConfiguration conf, DbFacility database) { var connectionString = database.GetConnectionString(conf.ShardMapManagerServerName, conf.ShardMapManagerDatabaseName); var assembly = typeof(DbFacility).Assembly; var resourceName = "Slider.WorkDone.Data.InitializeCommon.sql"; DbFacility.ExecuteSqlScript(connectionString, assembly.GetManifestResourceStream(resourceName)).Wait(); }
private static void RegisterPersisters(IDepencencyInjectionStore store) { var conf = new MultiverseConfiguration { ShardMapManagerServerName = ConfigurationManager.AppSettings["ServerName"], UniverseServerName = ConfigurationManager.AppSettings["ServerName"], UniverseUserId = ConfigurationManager.AppSettings["Slider:UserName"], UniversePassword = ConfigurationManager.AppSettings["Slider:Password"] }; store.RegisterSingleton(conf); store.RegisterSingleton(new DbFacility(conf.UniverseUserId, conf.UniversePassword)); store.RegisterSingleton(c => new SmmFacility(conf, c.GetInstance <DbFacility>())); store.RegisterSingleton(c => c.GetInstance <SmmFacility>().CreateOrGetShardMapManager()); if (ConfigurationManager.AppSettings["Slider:BeElastic"].Equals("true", StringComparison.OrdinalIgnoreCase)) { store.RegisterSingleton <IConnectionProvider>(c => new ElasticScaleConnectionProvider( c.GetInstance <ShardMapManager>(), c.GetInstance <MultiverseConfiguration>(), c.GetInstance <DbFacility>()) ); store.RegisterSingleton <ITenantsCommonConnectionProvider>(c => new ElasticTenantsCommonConnectionProvider( c.GetInstance <ShardMapManager>(), c.GetInstance <MultiverseConfiguration>(), c.GetInstance <SmmFacility>(), c.GetInstance <DbFacility>() )); } else { var connectionString = ConfigurationManager.ConnectionStrings["Slider:Once"].ConnectionString; store.RegisterSingleton <IConnectionProvider>(c => new FixedConnectionProvider(connectionString)); store.RegisterSingleton <ITenantsCommonConnectionProvider>(c => new FixedTenantsCommonConnectionProvider(connectionString)); } store.RegisterSingleton <ITenantPersister>(c => new TenantPersister(c.GetInstance <ITenantsCommonConnectionProvider>())); store.RegisterSingleton <ICompanyPersister>(c => new CompanyPersister(c.GetInstance <IConnectionProvider>())); }