Você cria um inicializador de banco de dados personalizado e substitui o
Seed método 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
}
}
Então você registra este inicializador para seu contexto derivado
MyContext :Database.SetInitializer<MyContext>(new MyContextInitializer());
Este é um método estático do
Database class e deve ser chamado em algum lugar uma vez na inicialização do aplicativo. Você também pode colocá-lo em um construtor estático do seu contexto para garantir que o inicializador esteja definido antes de criar a primeira instância de contexto:static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Em vez do inicializador básico
DropCreateDatabaseIfModelChanges<T> você também pode derivar de DropCreateDatabaseAlways<T> ou CreateDatabaseIfNotExists<T> se isso atender melhor às suas necessidades.