Benutzerdefinierte Codeausführung bei EF-Migrationen

Erfolgreiche Arbeit mit den Entity Frameworks-Migrationen in unserem Projekt. Aber jetzt stoße ich auf einen Sonderfall, bei dem ich eine Tabelle aktualisieren muss, die eine Geschäftslogik benötigt (in unserer Anwendung als C # -Code). Also habe ich versucht, einen Thread in den Migrationen zu erzeugenUp Methode und diese Tabelle Aktualisierung mit der Geschäftslogik zu tun. Diese Tabellenaktualisierung ist für die Ausführung der Anwendung nicht erforderlich und sollte im Hintergrund erfolgen.

Ich mache das ungefähr so:

public partial class MyMigration : DbMigration
{
  public override void Up()
  {
     // ... do some sql migration here ...

     // after executing the sql migrations custommethod should run
     // migration seems to wait until CustomMethod finished work
     new Thread(() => ExecuteCustomMethodDatabaseContext()).Start();
  }
}

Ich würde das erwartenUp Methode kehrt nach dem Starten des Threads zurück und EF setzt die Migration im MigrationHistory auf done. So kann die App gestartet werden und irgendwo im Hintergrund wird die Tabelle aktualisiert.

Aber nicht so, die Migrationen scheinen zu laufen, während der Thread läuft (dies dauert eine Menge Zeit).

Also meine entsprechenden Fragen:

Ist es allgemein empfehlenswert, benutzerdefinierten Code in DBmigrations auszuführen?Wenn nicht, wie kann ich die Notwendigkeit einer benutzerdefinierten Codeausführung in meinem Fall erfüllen? (ohne die Geschäftslogik in einer gespeicherten Prozedur oder so etwas umzuschreiben)Wenn ja, was mache ich falsch? Wie kann ich diesen Code innerhalb einer Migration ausführen, ohne ihn zu blockieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage