Mysql
 sql >> Base de données >  >> RDS >> Mysql

Entity Framework Insertion des données initiales lors de la reconstruction

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.