private static DbContextScope <T> CreateDbContextScope <T>(DbContextOption.Mode mode, IsolationLevel?isolationLevel, DbTransaction dbTransaction, DbConnection connection) where T : DbContext, IAmbientDbContext, new() { var dbContextScope = new DbContextScope <T>(mode, isolationLevel, dbTransaction, connection); dbContextScope.Initialize(); return(dbContextScope); }
internal static ContextData CreateContextData <T>(DbContextOption.Mode mode, IsolationLevel?isolationLevel, DbTransaction transaction, DbConnection sqlConnection) where T : DbContext, IAmbientDbContext, new() { Debug.WriteLine("Trying to create context data"); var contextData = new ContextData(); contextData.CreateNewDbContextIfNotExists <T>(mode, isolationLevel, transaction, sqlConnection); return(contextData); }
internal DbContextScope(DbContextOption.Mode mode, IsolationLevel?isolationLevel, DbTransaction dbTransaction, DbConnection sqlConnection) { _mode = mode; _dbTransaction = dbTransaction; _sqlConnection = sqlConnection; _isolationLevel = isolationLevel; ContextKey = new ContextKey(); }
public DbContextScope <T> CreateNonAmbientDbContextScope <T>(DbContextOption.Mode mode, IsolationLevel?isolationLevel) where T : DbContext, IAmbientDbContext, new() { var dbContextScope = new NonAmbientDbContextScope <T>(mode, isolationLevel, null, null, new AmbientDbContextHouseKeeper()); dbContextScope.Initialize(); return(dbContextScope); }
internal NonAmbientDbContextScope(DbContextOption.Mode mode, IsolationLevel?isolationLevel, DbTransaction dbTransaction, DbConnection sqlConnection, AmbientDbContextHouseKeeper ambientDbContextHouseKeeper) : base(mode, isolationLevel, dbTransaction, sqlConnection) { _ambientDbContextHouseKeeper = ambientDbContextHouseKeeper; }
/// <summary> /// Responsible for creating a new dbContext with given <see cref="DbContextOption.Mode"/> /// </summary> /// <typeparam name="T">dbContext of type {T} to be created.</typeparam> /// <param name="mode"><see cref="DbContextOption.Mode"/> to create dbContext with.</param> /// <param name="isolationLevel"><see cref="IsolationLevel"/> to create dbContext with.</param> /// <param name="dbTransaction">create a dbContext with external transaction</param> /// <param name="sqlConnection">create a dbContext with existing sql connection</param> /// <returns>true if new dbContext created else false.</returns> internal bool CreateNewDbContextIfNotExists <T>(DbContextOption.Mode mode, IsolationLevel?isolationLevel, DbTransaction dbTransaction, DbConnection sqlConnection) where T : DbContext, IAmbientDbContext, new() { if (DbContextCollection.GetDbContextByType <T>() != null) { return(false); } //Creating a new DbContext Type T currentDbContext; if (dbTransaction != null && sqlConnection != null) { currentDbContext = Activator.CreateInstance(typeof(T), sqlConnection, false) as T; } else { currentDbContext = Activator.CreateInstance(typeof(T)) as T; } if (currentDbContext != null) { currentDbContext.Mode = mode; if (mode == DbContextOption.Mode.Read) { currentDbContext.Configuration.AutoDetectChangesEnabled = false; } if (dbTransaction != null) { currentDbContext.Database.UseTransaction(dbTransaction); DbContextCollection.Add(currentDbContext, null); } else { if (isolationLevel.HasValue) { IsolationLevel = isolationLevel.Value; var transaction = currentDbContext.Database.BeginTransaction(isolationLevel.Value); DbContextCollection.Add(currentDbContext, transaction); } else { var transaction = currentDbContext.Database.BeginTransaction(); DbContextCollection.Add(currentDbContext, transaction); } } } return(true); }
internal static ContextData CreateContextData <T>(DbContextOption.Mode mode, IsolationLevel isolationLevel) where T : DbContext, IAmbientDbContext, new() { return(CreateContextData <T>(mode, isolationLevel, null, null)); }
private static DbContextScope <T> CreateDbContextScope <T>(DbContextOption.Mode mode, IsolationLevel?isolationLevel) where T : DbContext, IAmbientDbContext, new() { return(CreateDbContextScope <T>(mode, isolationLevel, null, null)); }