Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entity Framework Einfügen von Anfangsdaten beim Neuaufbau

Sie erstellen einen benutzerdefinierten Datenbankinitialisierer und überschreiben den 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
    }
}

Dann registrieren Sie diesen Initialisierer für Ihren abgeleiteten Kontext MyContext :

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

Dies ist eine statische Methode der Database Klasse und sollte irgendwo einmal beim Anwendungsstart aufgerufen werden. Sie können es auch in einen statischen Konstruktor Ihres Kontexts einfügen, um sicherzustellen, dass der Initialisierer gesetzt ist, bevor Sie die erste Kontextinstanz erstellen:

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

Anstelle des Basisinitialisierers DropCreateDatabaseIfModelChanges<T> Sie können auch von DropCreateDatabaseAlways<T> ableiten oder CreateDatabaseIfNotExists<T> wenn das Ihren Anforderungen besser entspricht.