public PersistenceEfCoreDataContext(IPersistenceDataContextProvider <IPersistenceDataContext <TEfDbContext> > provider, DbContextOptions <TEfDbContext> efDbContextOptions, ILogger logger) : base(outerDependencies: provider.EnsureNotNull(nameof(provider)).Value) { efDbContextOptions.EnsureNotNull(nameof(efDbContextOptions)); if (!efDbContextOptions.IsFrozen) { throw new ArgumentException( message: $"EF context options must be frozen (see {nameof(DbContextOptions)}.{nameof(DbContextOptions.IsFrozen)}) before using by this component.{Environment.NewLine}\tComponent:{this.FmtStr().GNLI2()}", paramName: nameof(efDbContextOptions)); } // _provider = provider; _efDbContextOptions = efDbContextOptions; _initializationLock = new SemaphoreSlim(initialCount: 1, maxCount: 1); _isInitialized = false; _efCtxLazy = new DisposableLazy <TEfDbContext>(factory: () => P_CreateAndAdjustEfDbContext(isReadOnly: false), ownsValue: true); _logger = logger; _txScopes = ImmutableStack <PersistenceEfCoreDataContextTxScope> .Empty; }
// TODO: Put strings into the resources. // public PersistenceEfCoreDataContext(IPersistenceDataContextProvider <IPersistenceDataContext <TEfDbContext> > provider, DbContextOptions <TEfDbContext> efDbContextOptions) : this(provider : provider, efDbContextOptions : efDbContextOptions, logger : null) { }