Vous créez un initialiseur de base de données personnalisé et écrasez le Seed
méthode
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
}
}
Ensuite, vous enregistrez cet initialiseur pour votre contexte dérivé MyContext
:
Database.SetInitializer<MyContext>(new MyContextInitializer());
Il s'agit d'une méthode statique de la Database
classe et doit être appelé quelque part une fois au démarrage de l'application. Vous pouvez également le placer dans un constructeur statique de votre contexte pour vous assurer que l'initialisateur est défini avant de créer la première instance de contexte :
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Au lieu de l'initialiseur de base DropCreateDatabaseIfModelChanges<T>
vous pouvez également dériver de DropCreateDatabaseAlways<T>
ou CreateDatabaseIfNotExists<T>
si cela répond mieux à vos besoins.