protected static long CalculateValue(DatabaseScriptType scriptType, int year, int month, int day, int hour, int minute, int second) { var branchNumber = (int)scriptType; var version = (branchNumber * 100000000000000L) + (year * 10000000000L) + (month * 100000000L) + (day * 1000000L) + (hour * 10000L) + (minute * 100L) + second; if (VersionBank == null) { VersionBank = new ConcurrentDictionary <long, DateTime>(); } if (!VersionBank.ContainsKey(version)) { VersionBank[version] = new DateTime(year, month, day, hour, minute, second); } return(version); }
private static void ApplyMigrationUp(MigrateDatabaseContext dbContext, DatabaseScriptType scriptType, Assembly migrationAssembly) { using (var sw = new StringWriter()) { var migRunner = GetMigrationRunner(sw, dbContext, migrationAssembly); var migrations = migRunner.MigrationLoader.LoadMigrations(); var printAtStart = false; foreach (var script in migrations) { if (!script.Value.Version.ToString().StartsWith(((int)scriptType).ToString())) { continue; } var migrateAttr = script.Value.Migration.GetType() .GetCustomAttributes(typeof(BaseExtMgrAttribute), false) .FirstOrDefault(); if (migrateAttr == null || migRunner.VersionLoader.VersionInfo.HasAppliedMigration(script.Value.Version)) { continue; } // exclude invaild script if (!ExtMigrationRunner.ValidScriptsStore.Contains($"{script.Value.Version}.{dbContext.DatabaseKey}")) { continue; } switch (scriptType) { case DatabaseScriptType.SqlDataStructureFunction: if (!(migrateAttr is ExtMgrDataStructureAndFunctionsAttribute)) { continue; } break; case DatabaseScriptType.SqlStoredProcedures: if (!(migrateAttr is ExtMgrStoredProceduresAttribute)) { continue; } break; default: throw new ArgumentOutOfRangeException(nameof(scriptType), scriptType, null); } if (!printAtStart) { Logger.InfoFormat($" > {scriptType.GetEnumDescription()}"); printAtStart = true; } Logger.InfoFormat($" - {script.Value.Version} - {script.Value.Migration.GetType().Name} {(!((BaseExtMgrAttribute)migrateAttr).UseTransaction ? " -noTrans" : string.Empty)}"); migRunner.ApplyMigrationUp(script.Value, ((BaseExtMgrAttribute)migrateAttr).UseTransaction); } } }