public SqlMainDomLock( ILoggerFactory loggerFactory, IOptions <GlobalSettings> globalSettings, IOptionsMonitor <ConnectionStrings> connectionStrings, IDbProviderFactoryCreator dbProviderFactoryCreator, IMainDomKeyGenerator mainDomKeyGenerator, DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory, NPocoMapperCollection npocoMappers) { // unique id for our appdomain, this is more unique than the appdomain id which is just an INT counter to its safer _lockId = Guid.NewGuid().ToString(); _logger = loggerFactory.CreateLogger <SqlMainDomLock>(); _globalSettings = globalSettings; _sqlServerSyntax = new SqlServerSyntaxProvider(_globalSettings); _dbFactory = new UmbracoDatabaseFactory( loggerFactory.CreateLogger <UmbracoDatabaseFactory>(), loggerFactory, _globalSettings, new MapperCollection(() => Enumerable.Empty <BaseMapper>()), dbProviderFactoryCreator, databaseSchemaCreatorFactory, npocoMappers, connectionStrings.CurrentValue.UmbracoConnectionString.ConnectionString); MainDomKey = MainDomKeyPrefix + "-" + mainDomKeyGenerator.GenerateKey(); }
private static IUmbracoBuilder AddMainDom(this IUmbracoBuilder builder) { builder.Services.AddSingleton <IMainDomKeyGenerator, DefaultMainDomKeyGenerator>(); builder.Services.AddSingleton <IMainDomLock>(factory => { IOptions <GlobalSettings> globalSettings = factory.GetRequiredService <IOptions <GlobalSettings> >(); IOptionsMonitor <ConnectionStrings> connectionStrings = factory.GetRequiredService <IOptionsMonitor <ConnectionStrings> >(); IHostingEnvironment hostingEnvironment = factory.GetRequiredService <IHostingEnvironment>(); IDbProviderFactoryCreator dbCreator = factory.GetRequiredService <IDbProviderFactoryCreator>(); DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory = factory.GetRequiredService <DatabaseSchemaCreatorFactory>(); ILoggerFactory loggerFactory = factory.GetRequiredService <ILoggerFactory>(); NPocoMapperCollection npocoMappers = factory.GetRequiredService <NPocoMapperCollection>(); IMainDomKeyGenerator mainDomKeyGenerator = factory.GetRequiredService <IMainDomKeyGenerator>(); switch (globalSettings.Value.MainDomLock) { case "SqlMainDomLock": return(new SqlMainDomLock( loggerFactory, globalSettings, connectionStrings, dbCreator, mainDomKeyGenerator, databaseSchemaCreatorFactory, npocoMappers)); case "MainDomSemaphoreLock": return(new MainDomSemaphoreLock( loggerFactory.CreateLogger <MainDomSemaphoreLock>(), hostingEnvironment)); case "FileSystemMainDomLock": default: return(new FileSystemMainDomLock( loggerFactory.CreateLogger <FileSystemMainDomLock>(), mainDomKeyGenerator, hostingEnvironment, factory.GetRequiredService <IOptionsMonitor <GlobalSettings> >())); } }); return(builder); }