/// <summary> /// 获取 /// </summary> /// <param name="conString"></param> /// <param name="dbType"></param> /// <returns></returns> internal static BaseDbContext GetDbContext([NotNull] string conString, DatabaseType dbType) { if (conString.IsNullOrEmpty()) { throw new Exception("conString能为空"); } var dbConnection = DbProviderFactoryHelper.GetDbConnection(conString, dbType); var model = DbModelFactory.GetDbCompiledModel(conString, dbType); DbContextOptionsBuilder builder = new DbContextOptionsBuilder(); switch (dbType) { case DatabaseType.SqlServer: builder.UseSqlServer(dbConnection, x => x.UseRowNumberForPaging()); break; case DatabaseType.MySql: builder.UseMySql(dbConnection); break; case DatabaseType.PostgreSql: builder.UseNpgsql(dbConnection); break; case DatabaseType.Oracle: builder.UseOracle(dbConnection, x => x.UseOracleSQLCompatibility("11")); break; default: throw new Exception("暂不支持该数据库!"); } builder.EnableSensitiveDataLogging(); builder.UseModel(model); builder.UseLoggerFactory(_loggerFactory); return(new BaseDbContext(builder.Options)); }
private void RefreshDb() { var oldDb = _db; var con = DbProviderFactoryHelper.GetDbConnection(_conString, _dbType); var dBCompiledModel = DbModelFactory.GetDbCompiledModel(_conString, _dbType); _db = new BaseDbContext(con, dBCompiledModel); if (oldDb != null) { _db.Database.Log += oldDb.Database.Log; } }
public void RefreshDb() { //重用DbConnection,使用底层相同的DbConnection,支持Model持热更新 DbConnection con = null; if (_transaction != null) { con = _transaction.Connection; } else { con = _db?.Database?.GetDbConnection() ?? DbProviderFactoryHelper.GetDbConnection(_conString, _dbType); } var dBCompiledModel = DbModelFactory.GetDbCompiledModel(_conString, _dbType); _db = new BaseDbContext(_dbType, con, dBCompiledModel); _db.Database.UseTransaction(_transaction); disposedValue = false; }