sql >> Database >  >> RDS >> Mysql

Entity Framework Initiële gegevens invoegen bij opnieuw opbouwen

U maakt een aangepaste database-initialisator en overschrijft de Seed methode

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
    }
}

Vervolgens registreert u deze initializer voor uw afgeleide context MyContext :

Database.SetInitializer<MyContext>(new MyContextInitializer());

Dit is een statische methode van de Database class en moet ergens bij het opstarten van de toepassing worden aangeroepen. Je kunt het ook in een statische constructor van je context plaatsen om ervoor te zorgen dat de initializer is ingesteld voordat je de eerste contextinstantie maakt:

static MyContext()
{
    Database.SetInitializer<MyContext>(new MyContextInitializer());
}

In plaats van de basisinitialisatie DropCreateDatabaseIfModelChanges<T> je kunt ook afleiden uit DropCreateDatabaseAlways<T> of CreateDatabaseIfNotExists<T> als dat beter aan uw behoeften voldoet.




  1. Spring Boot Database initialisatie MySQLException voor Trigger

  2. MySQL-groepering per week, op basis van een datumkolom?

  3. MYSQL-query tussen twee tijdstempels

  4. MySQL -- Update indien bestaat, anders invoegen met twee sleutels