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.