private async Task <bool> UpdateLinks <TLink>(MigrationPostgreSqlContext cp, IReadOnlyCollection <ToId> newArray , DbSet <TLink> links, Func <TLink, int> targetId, Action <TLink, int> setResult) where TLink : class { foreach (var link in links) { var toId = newArray.FirstOrDefault(f => f.From == targetId(link)); if (toId != null && toId.From != toId.To) { setResult(link, toId.To); } } await cp.SaveChangesAsync(); return(true); }
public static void Migrate(this IServiceCollection services, string connectionString, bool dataMigration, IEnumerable <IMigrationDataUpdate> additionalMigrations) { if (string.IsNullOrWhiteSpace(connectionString)) { throw new InvalidOperationException("_connectionString is null or empty"); } var dbContextOptions = new DbContextOptionsBuilder <MigrationPostgreSqlContext>(); dbContextOptions.UseNpgsql(connectionString, b => b.MigrationsAssembly(typeof(MigrationProviderExtensions) .Assembly.GetName() .Name) .MigrationsHistoryTable("__MyMigrationsHistory", schema: "migration")); using (MigrationPostgreSqlContext myDbContext = new MigrationPostgreSqlContext(dbContextOptions.Options)) { myDbContext.Migrate(new Configuration(additionalMigrations) { AutomaticDataMigrationsEnabled = dataMigration }); } }