/// <summary> /// </summary> /// <param name="memoryCache"></param> /// <param name="loggerFactory"></param> /// <param name="options"></param> protected UnitOfWorkBase(IMemoryCache memoryCache, ILoggerFactory loggerFactory, ICollectionOptions options) { MemoryCache = memoryCache; LoggerFactory = loggerFactory; var logger = loggerFactory.CreateLogger(GetType()); if (!options.TimeLoggingEnabled) { return; } logger.LogDebug( "Time logging is enabled in appsettings: logging time with the LogTimeDecorator will be started."); LogTime = true; }
/// <summary> /// Constructor /// </summary> /// <param name="memoryCache"></param> /// <param name="loggerFactory"></param> /// <param name="options"></param> public MongoDbUnitOfWork(IMemoryCache memoryCache, ILoggerFactory loggerFactory, ICollectionOptions options) : base(memoryCache, loggerFactory, options) { if (!(options is IMongoDbDatabaseOptions mongoOptions)) { throw new ArgumentException("Options should be of type IMongoDatabaseOptions"); } _logger = loggerFactory.CreateLogger(GetType()); try { var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); if (string.IsNullOrWhiteSpace(environment)) { environment = "Development"; } var fullDatabaseName = mongoOptions.EnvironmentSuffix ? $"{mongoOptions.DatabaseName}-{environment}" : mongoOptions.DatabaseName; var mongoClientSettings = MongoClientSettings.FromConnectionString( $"{mongoOptions.ConnectionString}/{fullDatabaseName}"); mongoClientSettings.MaxConnectionIdleTime = TimeSpan.FromMinutes(1); var client = new MongoClient(mongoClientSettings); _mongoDatabase = client.GetDatabase(fullDatabaseName); _typesToCache = mongoOptions.TypesToCache; Collections = new ConcurrentDictionary <Type, object>(); } catch (Exception exception) { _logger.LogCritical( $"Error while connecting to {mongoOptions.ConnectionString}.", exception); throw; } }
/// <summary> /// Constructor /// </summary> /// <param name="memoryCache"></param> /// <param name="loggerFactory"></param> /// <param name="options"></param> public NoActionUnitOfWork(IMemoryCache memoryCache, ILoggerFactory loggerFactory, ICollectionOptions options) : base(memoryCache, loggerFactory, options) { Collections = new ConcurrentDictionary <Type, object>(); _logger = loggerFactory.CreateLogger(GetType()); }