Pergunta

Consegui colocar o Code First em execução e ele funciona muito bem.

Como ainda estou desenvolvendo a aplicação a estrutura do Banco de Dados não está finalizada e por isso preciso implementar migrações.

Eu segui o Postagem oficial do blog e fiz com que o comando Update-Database funcionasse.

No entanto, isso atualiza apenas a versão SQLExpress do banco de dados.A versão de produção do banco de dados está no Azure e eu especifico a cadeia de conexão em tempo de execução para que o comando Update-Database não funcione nisso.

Então minha última pergunta é:como aplico migrações automáticas ao banco de dados de produção cuja cadeia de conexão é especificada em tempo de execução?

Foi útil?

Solução

No console do gerenciador de pacotes, digite:

Get-Help Update-Database

Parte relevante:

    Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]

Então você pode fazer um Update-Database -ConnectionStringName "MyConnectionString" e deve funcionar perfeitamente.

Você também tem um MigrateDatabaseToLatestVersion inicializador de banco de dados, se você configurá-lo (via Database.SetInitializer()), quando você implanta seu aplicativo em produção com a string de conexão adequada, no primeiro acesso ao banco de dados ele deve migrar automaticamente seu banco de dados para a versão mais recente.

Sugiro cautela, porém, sempre faça backup das coisas.

Atualizar

Os comentários recentes de @Alexy Strakh geraram outro argumento que vale a pena colocar na resposta.

Configurar corretamente um sistema de implantação usando Migrações do Code First, considerando 2 ConnectionStrings.

  1. Defina suas strings de conexão em web.config (prod e dev), com senhas padrão
  2. Faça com que o sistema de configuração do seu aplicativo conheça as configurações de conexão prod e dev e, opcionalmente, crie testes de unidade para garantir que o correto seja escolhido*
  3. Empregar transformação de arquivo de configuração e faça com que ele transforme seu web.config naquele com valores de produção
  4. Implante seu pacote em produção (esta deve ser a maneira mais inovadora)

Você não deve interagir com o ambiente de produção a partir da sua caixa de desenvolvimento, mas se você realmente precisa fazer isso e, em seguida, crie uma solução temporária que precise ser revertida assim que terminar.

Outra opção é simplesmente usar Web.Debug.config e Web.Release.config e ter um modelo central para o web.config principal (que seria o único que você faz check-in em seu controle de origem).

Apenas certifique-se de nunca verificar as senhas de produção ou desenvolvimento pessoal (se houver).

*Você pode usar o símbolo DEBUG para verificar como o aplicativo está sendo executado.

Outras dicas

Por que a EF da Entidade FrameworkA etapa de migração de migrações requer uma cadeia de conexão de banco de dados?

Tem uma solução que considero menos trabalho intensivo a longo prazo. Como se você criasse uma string de conexão com o mesmo nome

no seu contexto : Base ("dbname")

Nome da cadeia de conexão e catalog inicial correspondem ao dbname que você especificou e você não precisa inserir o nome da cadeia de conexão toda vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top