Exemplo n.º 1
0
        /// <summary>
        /// Perform database migration<br/>
        /// 迁移数据库<br/>
        /// </summary>
        protected void MigrateDatabase()
        {
            // Prepare database migration
            IModel initialModel = null;

            using (var context = new EFCoreDatabaseContextBase(Database, ConnectionString)) {
                // We may need create a new database and migration history table
                // It's done here
                context.Database.EnsureCreated();
                initialModel = context.Model;
            }
            // Perform database migration
            using (var context = new EFCoreDatabaseContext(Database, ConnectionString, Handlers, Providers)) {
                var serviceProvider = ((IInfrastructure <IServiceProvider>)context).Instance;
                var databaseCreator = serviceProvider.GetService <IDatabaseCreator>();
                if (databaseCreator is IRelationalDatabaseCreator)
                {
                    // It's a relational database, create and apply the migration
                    MigrateRelationalDatabase(context, initialModel);
                }
                else
                {
                    // It maybe an in-memory database or no-sql database, do nothing
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Return database context to pool<br/>
 /// 返回数据库上下文给池<br/>
 /// </summary>
 public bool Return(EFCoreDatabaseContext context)
 {
     if (Contexts.Count < Limit)
     {
         Contexts.Enqueue(context);
         return(true);
     }
     return(false);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Return database context to pool<br/>
 /// 返回数据库上下文给池<br/>
 /// </summary>
 public bool Return(EFCoreDatabaseContext context)
 {
     // always set _leased.Value = false, because SetPool is not used
     ((IDbContextPoolable)context).ResetState();
     if (Contexts.Count < Limit)
     {
         Contexts.Enqueue(context);
         return(true);
     }
     return(false);
 }
Exemplo n.º 4
0
 public Logger(EFCoreDatabaseContext context, string categoryName)
 {
     Context      = context;
     CategoryName = categoryName;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Initialize<br/>
 /// 初始化<br/>
 /// </summary>
 public EFCoreLoggerProvider(EFCoreDatabaseContext context)
 {
     Context = context;
 }