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.