Пример #1
0
        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();
        }
Пример #2
0
    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);
    }