sql >> Base de Datos >  >> RDS >> Mysql

Entity Framework insertando datos iniciales en la reconstrucción

Crea un inicializador de base de datos personalizado y sobrescribe el Seed método

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

Luego registra este inicializador para su contexto derivado MyContext :

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

Este es un método estático de la Database class y debe llamarse en algún lugar una vez al inicio de la aplicación. También puede colocarlo en un constructor estático de su contexto para asegurarse de que el inicializador esté configurado antes de crear la primera instancia de contexto:

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

En lugar del inicializador base DropCreateDatabaseIfModelChanges<T> también puede derivar de DropCreateDatabaseAlways<T> o CreateDatabaseIfNotExists<T> si eso se adapta mejor a sus necesidades.