2012-04-24 7 views
13

Ich habe die Versionskontrolle immer etwas problematisch gefunden, wenn es um Datenbankschemas geht.Verwenden von Entity Framework-Code Erste Migrationen in einem DVCS-Projekt

Also - ich evaluiere gerade Entity Framework Code Erste Migrationen und bis jetzt bin ich wirklich beeindruckt.

Meine Frage ist, hat jemand Erfahrung in der Verwendung von Migrationen in einem Team mit einem DVCS?

Wenn Entwickler, die in verschiedenen Niederlassungen arbeiten, jeweils eigene Migrationen erstellen, kommt das Tool "Update-Database" gut mit dem zusammen, wenn die Zweige zusammengeführt werden?

Ich denke, was passieren könnte ist, dass eine neue Migration in der Mitte der Liste erscheinen würde. Würde das dann abgeholt werden, oder sucht es nur nach "neueren" Migrationen als die zuletzt eingesetzte?

Ich schätze, dass das Team vorsichtig sein muss, um nicht widersprüchliche Schemaänderungen zu erstellen - das können wir verwalten - aber es wäre nützlich zu wissen, ob "Update-Database" schlau genug ist, um die fehlenden zu erkennen ' Migration?

Danke, - Chris

+2

haben Sie zu einem Abschluss mit diesem kommen? – sirrocco

Antwort

1

Nach den einem blog post ich zum Thema finden konnte, scheint es, dass die parallele Entwicklung, unabhängig von dem Werkzeug VCS, mit dem aktuellen Stand der Datenbankmigrationen in EF problematisch ist. Es scheint keinen Weg zu geben, mit dem Szenario umzugehen, da es den Zustand der Datenbank verfolgt. Pawel stellt example project on GitHub zur Verfügung, um das Problem anzuzeigen.

Sie können mit einem unabhängigen Tool für die Datenbankmigrationen besser arbeiten. Ich habe Migrator.NET mit sehr viel Erfolg verwendet und es richtig behandelt parallele Schemaänderungen der Entwickler. Es verwendet auch eine relativ Low-Tech-Methode der Verfolgung der Datenbank "Version", die überraschend gut funktioniert, solange Sie und Ihr Team an dem Tag entscheiden, dass niemand jemals die Datenbank berühren wird, außer durch eine Migrationsklasse (wir an diesem Tag genannt) v1 der Datenbank).

+0

Schauen Sie sich auch [FluentMigrator] (http://nuget.org/packages/FluentMigrator) an. Es scheint, dass Migrator.NET veraltet ist und dieses Projekt hat so viele Ähnlichkeiten. Ich habe es letzte Nacht gestartet und es gibt sogar eine Möglichkeit, die Migrator.NET-Migrationsklassen zu verwenden. – Sumo

0

Ich glaube nicht, dass es funktioniert und ich glaube nicht, dass es einen Weg gibt.

Weitere Details finden Sie unter this blog post.

Meine Empfehlung wäre, ein anderes Tool zu verwenden, um Ihre Migrationen zu verwalten.

1

Die Lösungen in diesem Artikel funktionieren möglicherweise für Sie. Sie erstellen einen zusätzlichen Schritt zum Erstellen einer leeren Migration, bei der die Änderungen vom anderen Entwickler ignoriert werden. Dadurch wird der Snapshot so aktualisiert, dass er mit der Datenbank synchronisiert ist.

http://msdn.microsoft.com/en-us/data/dn481501.aspx

Verwandte Themen