Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Entity Framework Inserindo Dados Iniciais na Reconstrução


Você cria um inicializador de banco de dados personalizado e substitui o 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
    }
}

Então você registra este inicializador para seu contexto derivado MyContext :
Database.SetInitializer<MyContext>(new MyContextInitializer());

Este é um método estático do Database class e deve ser chamado em algum lugar uma vez na inicialização do aplicativo. Você também pode colocá-lo em um construtor estático do seu contexto para garantir que o inicializador esteja definido antes de criar a primeira instância de contexto:
static MyContext()
{
    Database.SetInitializer<MyContext>(new MyContextInitializer());
}

Em vez do inicializador básico DropCreateDatabaseIfModelChanges<T> você também pode derivar de DropCreateDatabaseAlways<T> ou CreateDatabaseIfNotExists<T> se isso atender melhor às suas necessidades.