public void ReplaceDbContext(Guid key, DbContextProvider <TContext> provider) { var database = provider.DbContext.Database; var trans = GetOrAdd(key, (key) => { if (database.IsSqlServer()) { var connection = new SqlConnection(database.GetDbConnection().ConnectionString); connection.Open(); return(connection.BeginTransaction()); } else { throw new NotSupportedException("IDbTransactionCache supports SQL Server only"); } }); var builder = new DbContextOptionsBuilder <TContext>(); var options = builder.UseSqlServer(trans.Connection as SqlConnection).Options; var context = (TContext)Activator.CreateInstance(typeof(TContext), new object[] { options }); context.Database.AutoTransactionsEnabled = false; context.Database.UseTransaction(trans as DbTransaction); provider.DbContext = context; }
public DbContextProvider <TContext> CreateDbContextProvider(Guid key, string connectionString) { var trans = GetOrAdd(key, (key) => { var connection = new SqlConnection(connectionString); connection.Open(); return(connection.BeginTransaction()); }); var builder = new DbContextOptionsBuilder <TContext>(); var options = builder.UseSqlServer(trans.Connection as SqlConnection).Options; var context = (TContext)Activator.CreateInstance(typeof(TContext), new object[] { options }); context.Database.AutoTransactionsEnabled = false; var provider = new DbContextProvider <TContext>(context); return(provider); }
public CrudController(DbContextProvider <TContext> provider, ILogger <QueryController <TContext, TEntity> > logger) : base(provider, logger) { }
public QueryController(DbContextProvider <TContext> provider, ILogger <QueryController <TContext, TEntity> > logger) { _dbContext = provider.DbContext; _logger = logger; }