public static IDisposable Use(DbContextCreationContext context) { var previousValue = Current; _current.Value = context; return(new DisposeAction(() => _current.Value = previousValue)); }
/// <summary> /// Creates the database context. /// </summary> /// <param name="unitOfWork">The unit of work.</param> /// <param name="connectionStringName">Name of the connection string.</param> /// <param name="connectionString">The connection string.</param> /// <returns>TDbContext.</returns> private TDbContext CreateDbContext(IUnitOfWork unitOfWork, string connectionStringName, string connectionString) { var creationContext = new DbContextCreationContext(connectionStringName, connectionString); using (DbContextCreationContext.Use(creationContext)) { var dbContext = CreateDbContext(unitOfWork); return(dbContext); } }
/// <summary> /// 创建数据库上下文 /// </summary> /// <param name="unitOfWork"></param> /// <param name="connectionStringName"></param> /// <param name="connectionString"></param> /// <returns></returns> private async Task <TDbContext> CreateDbContextAsync(IUnitOfWork unitOfWork, string connectionStringName, string connectionString) { var creationContext = new DbContextCreationContext(connectionStringName, connectionString); using (DbContextCreationContext.Use(creationContext)) { var dbContext = await CreateDbContextAsync(unitOfWork); if (dbContext is IEfDbContext efDbContext) { efDbContext.Initialize(new EfDbContextInitializationContext(unitOfWork)); } return(dbContext); } }
private TDbContext CreateDbContext(IUnitOfWork unitOfWork, string connectionStringName, string connectionString) { var creationContext = new DbContextCreationContext(connectionStringName, connectionString); using (DbContextCreationContext.Use(creationContext)) { var dbContext = CreateDbContext(unitOfWork); if (unitOfWork.Options.Timeout.HasValue && dbContext.Database.IsRelational() && !dbContext.Database.GetCommandTimeout().HasValue) { dbContext.Database.SetCommandTimeout(unitOfWork.Options.Timeout.Value.TotalSeconds.To <int>()); } return(dbContext); } }
private TDbContext CreateDbContext <TDbContext>(string connectionString) where TDbContext : ScorpioDbContext <TDbContext> { using (DbContextCreationContext.Use(new DbContextCreationContext(connectionString))) { var context = Options.IsTransactional ?? true? CreateDbContextWithTransactional <TDbContext>(connectionString) : ServiceProvider.GetService <TDbContext>(); if (Options.Timeout.HasValue && context.Database.IsRelational() && context.Database.GetCommandTimeout().HasValue) { context.Database.SetCommandTimeout(Options.Timeout.Value); } return(context); } }
private TDbContext CreateDbContext(IUnitOfWork unitOfWork, string connectionStringName, string connectionString) { var creationContext = new DbContextCreationContext(connectionStringName, connectionString); using (DbContextCreationContext.Use(creationContext)) { var dbContext = CreateDbContext(unitOfWork); if (dbContext is IRocketEfCoreDbContext rocketEfCoreDbContext) { rocketEfCoreDbContext.Initialize( new RocketEfCoreDbContextInitializationContext( unitOfWork ) ); } return(dbContext); } }
private TDbContext CreateDbContext <TDbContext>(IUnitOfWork unitOfWork, string connectionStringName, string connectionString, string databaseProvider) where TDbContext : AbpDbContext { var creationContext = new DbContextCreationContext(connectionStringName, connectionString, databaseProvider); using (DbContextCreationContext.Use(creationContext)) { var dbContext = CreateDbContext <TDbContext>(unitOfWork); //if (dbContext is TDbContext abpEfCoreDbContext) //{ // abpEfCoreDbContext.Initialize( // new AbpEfCoreDbContextInitializationContext( // unitOfWork // ) // ); //} return(dbContext); } }