Mysql
 sql >> Database >  >> RDS >> Mysql

Entity Framework Inserimento di dati iniziali durante la ricostruzione

Crei un inizializzatore di database personalizzato e sovrascrivi il Seed metodo

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

Quindi registri questo inizializzatore per il tuo contesto derivato MyContext :

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

Questo è un metodo statico del Database class e dovrebbe essere chiamato da qualche parte una volta all'avvio dell'applicazione. Puoi anche inserirlo in un costruttore statico del tuo contesto per assicurarti che l'inizializzatore sia impostato prima di creare la prima istanza di contesto:

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

Invece dell'inizializzatore di base DropCreateDatabaseIfModelChanges<T> puoi anche derivare da DropCreateDatabaseAlways<T> o CreateDatabaseIfNotExists<T> se soddisfa meglio le tue esigenze.