Czy po prostu chcesz automatycznie aktualizacji bazy danych do najnowszej wersji, kiedy i gdzie kiedykolwiek twoje działa aplikacja (rozwój i produkcja)?
To może nie być dobry pomysł, z wyjątkiem bardzo prostych scenariuszy, w których wiesz, że możesz zaufać automatycznej migracji i ręczna migracja bazy danych jest niemożliwa. Zobacz tę odpowiedź: https://stackoverflow.com/a/15718190/2279059. Jeśli zignorujesz to ostrzeżenie, czytaj dalej.
Dodaj poniższe linie do web.config
:
<entityFramework>
<contexts>
<context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Może to wyglądać groźnie, ale ma w zasadzie taki sam jak następujący kod:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
Jeśli nie masz szczęścia z web.config
, wtedy może również spróbować umieścić ten kod w Global.asax
. Osobiście preferuję konfigurację poprzez kod.
Jeśli chcesz, aby Twój plik konfiguracyjny wyglądać czystsze, można również czerpać nową klasę z szablonu MigrateDatabaseToLatestVersion
klasy, dzięki czemu nie trzeba używać składni tajemniczy przekazywania argumentów typu w pliku web.cofig
:
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
Co to jest ustawienie inicjalizatora bazy danych, który automatycznie aktualizuje bazę danych do najnowszej wersji.
(Źródło i więcej informacji: http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html)
Możliwy duplikat [Using Entity Framework (kod pierwszy) migracje w produkcji] (http://stackoverflow.com/questions/10848746/using-entity-framework-code -pierwsze migracje-w-produkcji) –