Вы создаете пользовательский инициализатор базы данных и перезаписываете метод Seed
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
}
}
Затем вы регистрируете этот инициализатор для своего производного контекста MyContext
:
Database.SetInitializer<MyContext>(new MyContextInitializer());
Этостатический метод класса Database
и должен вызываться где-то один раз при запуске приложения.Вы также можете поместить его в статический конструктор вашего контекста, чтобы убедиться, что инициализатор установлен перед созданием первого экземпляра контекста:
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Вместо базового инициализатора DropCreateDatabaseIfModelChanges<T>
, который вы также можете получить изDropCreateDatabaseAlways<T>
или CreateDatabaseIfNotExists<T>
, если это лучше соответствует вашим потребностям.