sql >> Databasteknik >  >> RDS >> Mysql

Entity Framework Infogar initiala data vid ombyggnad

Du skapar en anpassad databasinitierare och skriver över Seed metod

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

Sedan registrerar du denna initialiserare för din härledda kontext MyContext :

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

Detta är en statisk metod för Database klass och bör anropas någonstans en gång vid applikationsstart. Du kan också lägga in den i en statisk konstruktor av din kontext för att se till att initialiseringen är inställd innan du skapar den första kontextinstansen:

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

Istället för basinitialisatorn DropCreateDatabaseIfModelChanges<T> du kan också härleda från DropCreateDatabaseAlways<T> eller CreateDatabaseIfNotExists<T> om det bättre motsvarar dina behov.




  1. Kardinalitetsuppskattning för flera predikat

  2. Att använda MySQL:s TIMESTAMP kontra att lagra tidsstämplar direkt

  3. Fråga för att beräkna summan av avstånd (longitud, latitud) i på varandra följande rader i Mysql

  4. Hur du krypterar dina MySQL- och MariaDB-säkerhetskopier