Tworzysz niestandardowy inicjator bazy danych i zastępujesz Seed metoda
public class MyContextInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
//EF will call SaveChanges itself
}
}
Następnie zarejestrujesz ten inicjator dla swojego kontekstu pochodnego MyContext :
Database.SetInitializer<MyContext>(new MyContextInitializer());
To jest statyczna metoda Database class i powinna być wywoływana gdzieś podczas uruchamiania aplikacji. Możesz również umieścić go w statycznym konstruktorze swojego kontekstu, aby upewnić się, że inicjator jest ustawiony przed utworzeniem pierwszej instancji kontekstu:
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Zamiast podstawowego inicjatora DropCreateDatabaseIfModelChanges<T> możesz również wyprowadzić z DropCreateDatabaseAlways<T> lub CreateDatabaseIfNotExists<T> jeśli to lepiej odpowiada Twoim potrzebom.