Ejemplo n.º 1
0
        private async Task <int> CalculateMigrationStartIndexAsync(
            string migrationId, IMigrationManager <TContext> manager, CancellationToken ct)
        {
            var dbMigrations = await manager.GetAllMigrationsAsync(ct).ConfigureAwait(false);

            if (dbMigrations.Count <= 0)
            {
                return(0);
            }

            var sortedDbMigrations = new SortedList <string, string>(dbMigrations.Count);

            foreach (var dbMigration in dbMigrations)
            {
                sortedDbMigrations.Add(dbMigration, dbMigration);
            }

            FailIfAppliedMigrationsMismatchInMemory(sortedDbMigrations.Keys);

            return(sortedDbMigrations.ContainsKey(migrationId)
                ? -1
                : sortedDbMigrations.Count);
        }