/// <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 } } }
/// <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); }
/// <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); }
public Logger(EFCoreDatabaseContext context, string categoryName) { Context = context; CategoryName = categoryName; }
/// <summary> /// Initialize<br/> /// 初始化<br/> /// </summary> public EFCoreLoggerProvider(EFCoreDatabaseContext context) { Context = context; }