예제 #1
0
 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;
 }
예제 #2
0
 // TODO: Put strings into the resources.
 //
 public PersistenceEfCoreDataContext(IPersistenceDataContextProvider <IPersistenceDataContext <TEfDbContext> > provider, DbContextOptions <TEfDbContext> efDbContextOptions)
     : this(provider : provider, efDbContextOptions : efDbContextOptions, logger : null)
 {
 }