Esempio n. 1
0
 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;
     }
 }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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>()));
        }