Skip to content

Initializers

Marcin Sulecki edited this page Apr 4, 2017 · 2 revisions

Inicjalizatory

Utwórz bazę danych jeśli nie istnieje

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>());
    }

Utwórz bazę danych za każdym razem

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>());
    }

Usuń i utwórz bazę danych jeśli zmienił się model

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>());
    }

Wyłączenie inicjalizatorów

 public MyContext() : base("MyDatabase")
    {
        Database.SetInitializer<MyContext>(null);
     }

Użycie pliku konfiguracyjnego

 <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());
    }
    
}

Wyłączenie inicjalizatora za pomocą pliku konfiguracyjnego

Clone this wiki locally