/// <summary> /// 配置数据库 /// </summary> /// <typeparam name="TDbContext"></typeparam> /// <param name="providerName">数据库提供器</param> /// <param name="connectionString">数据库连接字符串</param> /// <param name="options">数据库上下文选项构建器</param> /// <param name="dynamicDbContext">动态数据库上下文,用于分表分库用</param> private static DbContextOptionsBuilder ConfigureDatabase <TDbContext>(string providerName, string connectionString, DbContextOptionsBuilder options, bool dynamicDbContext = false) where TDbContext : DbContext { var dbContextOptionsBuilder = options; if (!string.IsNullOrEmpty(connectionString)) { providerName ??= DbProvider.GetAppDbContextAttribute <TDbContext>()?.ProviderName; // 调用对应数据库程序集 var(UseMethod, MySqlVersion) = GetDatabaseProviderUseMethod(providerName); // 处理最新 MySql 包兼容问题 // https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/commit/83c699f5b747253dc1b6fa9c470f469467d77686 if (providerName.StartsWith(DbProvider.MySql)) { dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, MySqlVersion, MigrationsAssemblyAction }) as DbContextOptionsBuilder; } else { dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, MigrationsAssemblyAction }) as DbContextOptionsBuilder; } } // 解决分表分库 if (dynamicDbContext) { dbContextOptionsBuilder .ReplaceService <IModelCacheKeyFactory, DynamicModelCacheKeyFactory>(); } return(dbContextOptionsBuilder); }
public static void ShowGCD(int[] arrayNum) { UseMethod methodE = UseEuclid; UseMethod methodB = UseBinary; int firstNumForEuclid = arrayNum[0]; int secondNumForEuclid; int firstNumForBinary = arrayNum[0]; int secondNumForBinary; Stopwatch swatch = new Stopwatch(); swatch.Start(); for (int i = 1; i < arrayNum.Length; i++) { secondNumForEuclid = arrayNum[i]; firstNumForEuclid = methodE(firstNumForEuclid, secondNumForEuclid); } swatch.Stop(); Console.WriteLine($"НОД Евклидом: {firstNumForEuclid}. Время на выполнения:{swatch.Elapsed}"); Stopwatch swatchTwo = new Stopwatch(); swatchTwo.Start(); for (int i = 1; i < arrayNum.Length; i++) { secondNumForBinary = arrayNum[i]; firstNumForBinary = methodB(firstNumForBinary, secondNumForBinary); } swatchTwo.Stop(); Console.WriteLine($"НОД Бинарный: {firstNumForEuclid}. Время на выполнения:{swatchTwo.Elapsed}"); }
// Start is called before the first frame update void Start() { defTime = TimeToUse; used = false; fillImage = GameObject.Find("UseHUD").GetComponent <Image>(); if (lightStand) { UseAction = UseLightStand; } else if (chest) { UseAction = UseChest; } }
/// <summary> /// 配置数据库 /// </summary> /// <typeparam name="TDbContext"></typeparam> /// <param name="providerName">数据库提供器</param> /// <param name="connectionString">数据库连接字符串</param> /// <param name="options">数据库上下文选项构建器</param> private static DbContextOptionsBuilder ConfigureDatabase <TDbContext>(string providerName, string connectionString, DbContextOptionsBuilder options) where TDbContext : DbContext { var dbContextOptionsBuilder = options; // 获取数据库上下文特性 var dbContextAttribute = DbProvider.GetAppDbContextAttribute(typeof(TDbContext)); if (!string.IsNullOrWhiteSpace(connectionString)) { providerName ??= dbContextAttribute?.ProviderName; // 解析数据库提供器信息 (string name, string version) = ReadProviderInfo(providerName); providerName = name; // 调用对应数据库程序集 var(UseMethod, MySqlVersion) = GetDatabaseProviderUseMethod(providerName, version); // 处理最新第三方 MySql 包兼容问题 // https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/commit/83c699f5b747253dc1b6fa9c470f469467d77686 if (DbProvider.IsDatabaseFor(providerName, DbProvider.MySql)) { dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, MySqlVersion, MigrationsAssemblyAction }) as DbContextOptionsBuilder; } // 处理 SqlServer 2005-2008 兼容问题 else if (DbProvider.IsDatabaseFor(providerName, DbProvider.SqlServer) && (version == "2008" || version == "2005")) { // 替换工厂 dbContextOptionsBuilder.ReplaceService <IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>(); dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, MigrationsAssemblyAction }) as DbContextOptionsBuilder; } // 处理 Oracle 11 兼容问题 else if (DbProvider.IsDatabaseFor(providerName, DbProvider.Oracle) && !string.IsNullOrWhiteSpace(version)) { Action <IRelationalDbContextOptionsBuilderInfrastructure> oracleOptionsAction = options => { var optionsType = options.GetType(); // 处理版本号 optionsType.GetMethod("UseOracleSQLCompatibility") .Invoke(options, new[] { version }); // 处理迁移程序集 optionsType.GetMethod("MigrationsAssembly") .Invoke(options, new[] { Db.MigrationAssemblyName }); }; dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, oracleOptionsAction }) as DbContextOptionsBuilder; } else { dbContextOptionsBuilder = UseMethod .Invoke(null, new object[] { options, connectionString, MigrationsAssemblyAction }) as DbContextOptionsBuilder; } } // 解决分表分库 if (dbContextAttribute?.Mode == DbContextMode.Dynamic) { dbContextOptionsBuilder .ReplaceService <IModelCacheKeyFactory, DynamicModelCacheKeyFactory>(); } return(dbContextOptionsBuilder); }