7

Ich habe derzeit mehrere Datenbanken mit FluentMigrator und bin gespannt, wie sich Entity Framework Migrations vergleichen lassen.Was können Entity Framework-Migrationen tun, die FluentMigrator nicht kann?

Können EF Migrations Daten in Migrationen importieren und selektiv Migrationsskripts ausführen, die auf Umgebungen wie FluentMigrator mit Tags und Profilen basieren?

Ich verwende bereits EF Database First als ORM für meine Anwendung, und ich glaube, ich habe irgendwo gelesen, dass EF Migrationen jetzt auch für Nicht-Code First EF unterstützt werden, aber mein Team hat darüber nachgedacht, einen Code zu refaktorieren Erster Ansatz wegen einiger Einschränkungen des Database First-Ansatzes. Würden EF Migrations nur sinnvoller sein, anstatt ein anderes Migrationsframework von Drittanbietern zu verwenden, wenn Sie mit einem Code-First-Ansatz arbeiten?

+0

Nun, in erster Linie kann FM nicht automatisch Migrationen generieren. Dh es durchsucht nicht die Datenbank, bestimmt, was sich geändert hat, und erstellt das Skript basierend auf dem Diff. EFM macht das. –

+0

Jetzt, drei Jahre später, bin ich gespannt, ob Sie den Wechsel versucht haben und was Ihre Erfahrung war. Es scheint, als ob die meisten, die Migrationen verwenden, das eine oder das andere verwenden und keine Meinung über das andere haben. –

Antwort

1

Ich habe keine Erfahrung mit FluentMigrator, aber nach einem kurzen Überfliegen der Dokumentation sieht es so aus, als müssten Sie Ihre Migrationen manuell erstellen?

EF wird jedes Mal, wenn sich Ihr Modell ändert und die App ausgeführt wird, eine Migration anfordern. Das macht es leicht, aber auch nervig. Sobald Sie Migrationen aktiviert haben, erfordern Änderungen an Ihrem Modell, die einen Datenbankwechsel erfordern, eine Migration. Sie können die Migration ändern und sie wird automatisch generiert. Schau dir einfach die "down" Version an ... Ich hatte Probleme.

Code zuerst ist ziemlich nahtlose tho. Behandelt sogar komplexere Objektmodelle wie Unterklassen. Sie können sogar angeben, wie die Tabellen generiert werden (Tabelle für jeden Typ, Basistabelle und eine Tabelle für jeden Typ oder eine einzelne Tabelle und einen Typschlüssel).

Alles, was zu sagen, wenn Sie immer C# -Code generieren werden, um Ihre Datenbank zu aktualisieren, würde ich mit EF integrierten Migrationen gehen. Sie erledigen die meiste Arbeit für Sie.