Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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;
 }