Pergunta

Gostaria de apresentar o Code First Migrations ao meu projeto, mas não tenho certeza de como lidar com a implantação disso no meu cliente para teste.Até agora, as coisas têm sido bastante simples e acabei de usar um CreateDatabaseIfNotExists inicializador.Agora, tenho dois cenários:

  1. Ele exclui seu banco de dados existente, antes das migrações, e usa um inicializador para criar um novo banco de dados com migrações, e usamos migrações a partir de agora para atualizar seu banco de dados.Posso usar o MigrateDatabaseToLatestVersion inicializador para criar o banco de dados se estiver faltando também?

  2. Acabei de implantar meu código e deixá-lo realizar migrações.Não tenho certeza se alguma coisa, mas usando um MigrateDatabaseToLatestVersion é necessário aqui.Isso atualizará um banco de dados pré-migrações para um banco de dados adequado para migrações?

Foi útil?

Solução

Isto é o que faço quando a migração automática é necessária;Espero que isso ajude você a encontrar uma solução:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
    );
Database.Initialize(false);

No arquivo de configuração das migrações, defini o seguinte no construtor

AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;

No arquivo de configuração você deve substituir o método seed; caso contrário, você pode adicioná-lo e preencher seus dados iniciais.

O que o procedimento acima fará é criar/atualizar o banco de dados para o mais recente, desde que não ocorra perda de dados.Isso deve permitir que você entregue o código ao cliente.


Por outro lado, para um sistema de produção, normalmente defenderei a questão de não fazer isso.Isto tinha muitas desvantagens.Para bancos de dados sobre os quais não tenho controle, ainda não encontrei um cliente que recusou o arquivo de script gerado.

Você pode obter isso usando o seguinte comando depois de adicionar uma migração por meio do Console do Gerenciador de Pacotes:

Update-database –script -verbose
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top