-
Notifications
You must be signed in to change notification settings - Fork 0
Initializers
Marcin Sulecki edited this page Apr 4, 2017
·
2 revisions
Domyślne zachowanie.Tworzy nową bazę danych jeśli nie istnieje we wskazanym miejscu w konfiguracji. Jeśli zmieni się model aplikacja wygeneruje wyjątek.
public MyContext() : base("MyDatabase")
{
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
}
Usuwa istniejącą bazę danych i tworzy nową, niezależnie od tego czy się zmienił model. Utracisz wszystkie dane więc uważaj przy aplikacji produkcyjnej :) To może być przydatne podczas tworzenia testów jednostkowych lub integracyjnych.
public MyContext() : base("MyDatabase")
{
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
}
Jeśli zmieni się model klas inicjalizator usuwa istniejącą bazę i utworzy nową. Zatem nie musisz się martwić o zarządzanie strukturami bazy danych gdy twój model klas ulegnie zmianie. Pamiętaj tylko, że utracisz wszystkie dane, więc zastosowanie na produkcji raczej jest mało realne.
public MyContext() : base("MyDatabase")
{
Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
}
public MyContext() : base("MyDatabase")
{
Database.SetInitializer<MyContext>(null);
}
<entityFramework>
<contexts>
<context type="EFGettingStarted.MyContext, EFGettingStarted">
<databaseInitializer type="System.Data.Entity.DropCreateDatabaseAlways`1[[EFGettingStarted.MyContext, EFGettingStarted]], EntityFramework" />
</context>
</contexts>
</entityFramework>
public class MusicStoreContext: DbContext
{
public MusicStoreContext(): base("MusicStoreConnection")
{
Database.SetInitializer<MusicStoreContext>(new CreateDatabaseIfNotExists<MusicStoreContext>());
//Database.SetInitializer<MusicStoreContext>(new DropCreateDatabaseIfModelChanges<MusicStoreContext>());
//Database.SetInitializer<MusicStoreContext>(new DropCreateDatabaseAlways<MusicStoreContext>());
//Database.SetInitializer<MusicStoreContext>(new SchoolDBInitializer());
}
}