13

Ich habe mit Entity Framework 4 gespielt und dabei den modellbasierten Ansatz verwendet, um das Datenbankskript von meinen Entitäten zu generieren. Das ist großartig, aber ich bin nicht sicher, wie das funktioniert, wenn es um die Versionierung der Datenbank geht. Ich vermute, wenn ich einen aktiven Datensatztyp-Migrationsframework verwenden möchte, müsste ich umgekehrt arbeiten und meine Entitäten aus meiner Datenbank generieren? Gibt es eine Möglichkeit, den modellbasierten Ansatz zu verwenden und die Datenbank korrekt zu versionieren?Datenbankmigrationen für Entity Framework 4

+0

Microsoft ist nun aktiv auf dieses Feature für Entity Framework arbeiten, können Sie es auf dem ADO.NET Team Blog als zuerst der Code Migrations Beiträge lesen. http://blogs.msdn.com/b/adonet/ –

Antwort

16

Das wird sich bald als Paket NuGet kommen genannt EntityFramework.Migrations

Eine Demo von Scott Hanselman auf der TechEd 2011 (online verfügbar unter http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349) durchgeführt wurde. Der entsprechende Abschnitt ist 45 Minuten in

Kurz gesagt, sobald das Paket installiert ist, können Sie die folgenden in das Package Manager-Konsole eingeben werden eine Datenbank Change Script zu generieren.

migrate -script 

UPDATE (13 (Nov-2011)

Der Alpha 3 Build dieses Pakets ist jetzt auf NuGet verfügbar. Anstatt das oben erwähnte Cmdlet migrate -script zu verwenden, wird das Cmdlet Add-Migration <migrationname> verwendet. Ein walk-through of its use kann auf dem ADO.NET-Teamblog gefunden werden.

UPDATE (14-Feb-2012)

Diese Funktionalität ist jetzt als Teil des Haupt EntityFramework NuGet package verfügbar, mit Version 4.3 zu starten. Ein updated walk-through mit EF 4.3 kann auf dem ADO.NET-Team-Blog gefunden werden.

+0

+1 für die Aktualisierung – Karsten

0

Nun, wenn Sie wie ActiveRecord arbeiten möchten, dann müssen Sie wie ActiveRecord arbeiten. :)

Wenn Sie jedoch Model-first verwenden und dennoch Migrationen verwenden möchten, ist dies möglich, erfordert jedoch zusätzliche Arbeit in Ihrem Auftrag. Model-first generiert ein Datenbankänderungsskript. Sie müssen die relevanten Teile in Migrationen extrahieren und manuell Skripts rückgängig machen. Obwohl dies mit manueller Arbeit verbunden ist, erscheint es mir nicht so furchtbar schwierig.

2

Sie können versuchen Wizardby: Dies ist ein Tool zum Verwalten von Datenbankmigrationen. Es integriert sich nicht mit EF (da es in dieser Hinsicht fast unmöglich ist, damit zu integrieren), aber es macht den Job.

+0

Super! Das ist ein vielversprechendes Open-Source-Projekt! – Korayem

1

ScottGu erwähnt etwas über diese in einem blog entry:

Wir werden auch eine „Migration“ -Funktion mit EF in der Zukunft zu unterstützen, die es Ihnen erlaubt,/programmatisch Skript Datenbank-Schema Migration zu automatisieren.

[EDIT]

ich glaube, er könnte auf die Entity Designer Database Generation Power Pack mit Bezug, wie von Morteza Manavi in ​​another SO answer beantwortet.

0

Ich arbeite an einer Alternative zu EF.Migrations-Bibliothek - EntityFramework.SchemaCompare. Es ermöglicht das physische Vergleichen eines Datenbankschemas mit einem Entitätsmodell, das den Datenbankkontext darstellt (EF.Migrations macht das nicht). Dies kann entweder während der Initialisierung der Datenbank oder manuell auf Anfrage ausgelöst werden.Betrachten Sie das folgende Beispiel

#if DEBUG 
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>()); 
#endif 

Es wird eine Ausnahme während Datenbankinitialisierung werfen beschreibt die Unterschiede zwischen db-Schema und Modell, wenn Kompatibilitätsprobleme zu finden sind. Alternativ können Sie diese Unterschiede jederzeit in Ihrem Code finden auf diese Weise

using (var ctx = new DatabaseContext()) 
{ 
    var issues = ctx.Database.FindCompatibilityIssues(); 
} 

Dann auf die Hände, diese Unterschiede/Kompatibilitätsprobleme aufweisen, können Sie entweder das DB-Schema aktualisieren oder das Modell.

Dieser Ansatz ist besonders nützlich, wenn Sie vollständige Kontrolle über das Datenbankschema und den Modellentwurf benötigen und/oder in einem Team arbeiten müssen, in dem mehrere Teammitglieder an demselben Datenbankschema und -modell arbeiten. Es kann auch zusätzlich zu EF.Migrationen verwendet werden.

Fork mich bei GitHub: https://github.com/kriasoft/data