Exemplo n.º 1
0
    public static IDisposable Use(DbContextCreationContext context)
    {
        var previousValue = Current;

        _current.Value = context;
        return(new DisposeAction(() => _current.Value = previousValue));
    }
Exemplo n.º 2
0
        /// <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);
            }
        }
Exemplo n.º 3
0
    /// <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);
        }
    }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
            }
        }