2010-12-10 9 views
5

Wir erstellen eine Anwendung in C#, die Entity Framework mit SQL Server 2008 verwendet. Wir entwerfen das Modell mithilfe des Designers in Visual Studio und generieren daraus automatisch Entitäten.Umgang mit Datenbankmigrationen bei Verwendung von Entity Framework

Wir arbeiten an Version 1.0. Wenn wir 2.0 veröffentlichen, müssen wir Änderungen am Modell und der zugrunde liegenden Datenbankstruktur vornehmen. Ich denke, wir brauchen sogenannte "Datenbankmigrationen".

Traditionell hatte ich eine Tabelle in der Datenbank namens "Version". Immer wenn ich eine neue Version meiner Software erstellt habe, habe ich Datenbankaktualisierungsskripte mit ALTER TABLE-Anweisungen erstellt. Meine Software hat die Versionstabelle überprüft und führt die Upgrade-Skripts aus, die zum Aktualisieren der Datenbank auf die 'Softwareversion' erforderlich sind.

Gibt es eine bessere Möglichkeit, dies zu handhaben? Es wäre schön, wenn ich die alter table-scripts nicht selbst schreiben und meine eigene Software schreiben müsste, um die Datenbankstruktur zu aktualisieren.

Antwort

0

Was ich beim ersten Modell gemacht habe, ist, dass ich mein Modell auf eine reine Schema-Datenbank richtete (also hatte ich eine myapp-Datenbank, wo meine App lief, aber mein EF4-Modell wurde ausgegeben) eine myapp_schema-Datenbank). Wenn das myapp_schema aktualisiert wurde, habe ich Db Source Tools verwendet, um die Aktualisierungsskripts zu generieren und das myApp-Datenbankschema so zu machen, dass es mit myApp_schema identisch ist.

0

Chech diesen Beitrag aus. Es geht um CTP4 von EF4, aber es ist das, was Sie brauchen.

http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx

Unforunately ist dies noch nicht verfügbar. CTP5 wurde vor ein paar Tagen veröffentlicht und soweit ich weiß ist das noch nicht enthalten.

+0

Kühl. Aber es wäre noch cooler, wenn die Lösung heute mit dem Modell-First-Ansatz und nicht erst mit dem Code-First in der Zukunft arbeiten würde. ;-) – Martin

+0

Ich stimme zu und ich hoffe, dass diese Funktionalität nicht nur auf Code-First beschränkt, sondern auch auf Model-First erweitert wird. Und ich hoffe wirklich, dass sie es so schnell wie möglich veröffentlichen. Dies war wahrscheinlich eher eine FYI-Antwort als eine Lösung. Hoffe, dass jemand über aktuelle Dinge wie diese weiß. – gligoran

Verwandte Themen