13

Gram w Entity Framework 4, używając podejścia opartego na modelu do generowania skryptu bazy danych z moich encji. To jest świetne, ale nie jestem pewien, jak to działa, jeśli chodzi o wersjonowanie bazy danych. Zgaduję, że jeśli chciałbym użyć aktywnej struktury migracji rekordów, musiałbym pracować na odwrót i generować moje jednostki z mojej bazy danych? Czy istnieje sposób na prawidłowe zastosowanie podejścia opartego na modelu i odpowiednią wersję bazy danych?Migracja baz danych dla Entity Framework 4

+0

Microsoft jest obecnie aktywnie działa na tej funkcji dla Entity Framework, można o tym przeczytać na blogu zespołu ADO.NET jako słupkami kod najpierw migracje. http://blogs.msdn.com/b/adonet/ –

Odpowiedz

16

ten zostanie wkrótce jako pakiet Nuget zwane EntityFramework.Migrations

Demo zostało przeprowadzone przez Scott Hanselman na TechEd 2011 (dostępna online pod http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349). Odpowiednia sekcja jest 45 minut w

W skrócie, po zainstalowaniu pakietu, można wprowadzić następujące wartości w konsoli Menedżer pakietów wygenerować skrypt zmian w bazie.

migrate -script 

UPDATE (13 -Nov-2011)

Kompilacja alfa 3 tego pakietu jest już dostępna na NuGet. Zamiast używać wymienionego powyżej polecenia cmdlet migrate -script, używa on polecenia cmdlet Add-Migration <migrationname>. A walk-through of its use można znaleźć na blogu zespołu ADO.NET.

UPDATE (14-lut-2012)

Funkcjonalność ta jest obecnie dostępna jako część głównego EntityFramework NuGet package, począwszy od wersji 4.3. An updated walk-through przy użyciu EF 4.3 można znaleźć na blogu zespołu ADO.NET.

+0

+1 za aktualizację – Karsten

0

Cóż, jeśli chcesz pracować jak ActiveRecord, musisz pracować jak ActiveRecord. :)

Jeśli jednak chcesz korzystać z migracji modelu, ale nadal korzystać z migracji, będzie to możliwe, ale będzie wymagać dodatkowej pracy w Twoim imieniu. Model-pierwszy wygeneruje skrypt zmiany bazy danych. Będziesz musiał wyodrębnić odpowiednie części do migracji, a także ręcznie pisać skasowane skrypty. Chociaż wiąże się to z pracą fizyczną, nie wydaje mi się to aż tak trudne.

2

Możesz wypróbować Wizardby: jest to narzędzie do zarządzania migracjami baz danych. Nie integruje się z EF (ponieważ jest prawie niemożliwe zintegrowanie się z nim w tym zakresie), ale wykonuje to zadanie.

+0

Super! to bardzo obiecujący projekt open source! – Korayem

0

Pracuję nad alternatywą dla biblioteki EF.Migrations - EntityFramework.SchemaCompare. Pozwala fizycznie porównać schemat bazy danych z modelem encji reprezentującym kontekst bazy danych (EF.Migrations tego nie robi). Można go uruchomić podczas inicjalizacji bazy danych lub ręcznie na żądanie.Rozważmy następujący przykład

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

Będzie wyjątek podczas inicjalizacji bazy danych opisujących różnice między schematu db i modelu, jeżeli występują problemy z kompatybilnością. Alternatywnie można znaleźć te różnice w dowolnym momencie w kodzie ten sposób

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

następnie o tych różnic/problemy z niekompatybilnością na rękach można albo zaktualizować schemat dB lub modelu.

To podejście jest szczególnie przydatne, gdy potrzebna jest pełna kontrola nad schematem bazy danych i projektowaniem modelu i/lub praca w zespole, w którym wielu członków zespołu pracuje na tym samym schemacie i modelu bazy danych. Może być również używany jako dodatek do plików EF.Migrations.

Widelec mnie na GitHub: https://github.com/kriasoft/data

Powiązane problemy