Pergunta

Instalei o VS SP1 e brinquei com o Entity Framework.

Criei um esquema a partir de um banco de dados existente e tentei algumas operações básicas.

A maior parte correu bem, exceto a atualização do esquema do banco de dados.

Mudei o banco de dados de todas as maneiras básicas:

  • adicionou uma nova tabela
  • excluiu uma tabela
  • adicionou uma nova coluna a uma tabela existente
  • excluiu uma coluna de uma tabela existente
  • alterou o tipo de uma coluna existente

Os três primeiros correram bem, mas a alteração do tipo e a exclusão da coluna não acompanharam as alterações do banco de dados.

Existe alguma maneira de fazer o trabalho do designer?Ou não é suportado no momento?Ainda não encontrei nenhum material relacionado, mas continuo pesquisando.

Foi útil?

Solução

Eu diria que, possivelmente, aqueles não acontecer, porque eles iriam quebrar a compilação para código existente, mas isso é apenas uma suposição da minha parte.

Aqui está a minha lógica:

Em primeiro lugar, a EF é suposto ser superior a 1: 1 mapeamento da tabela, por isso é bem possível que só porque você está excluindo uma coluna da tabela A não significa que para essa entidade, não deve haver uma propriedade Descrição . Você pode simplesmente mapear essa propriedade para outra tabela.

Em segundo lugar, mudando um tipo só poderia quebrar constrói. essa é a única lógica lá.

Outras dicas

Descobri que, em geral, ainda há muito poucos erros com o 'Modelo de atualização do banco de dados' funcionalidade.

As chaves são o assassino para mim - eu ainda não tenho qualquer modificação que faço a um relacionamento de chave estrangeira ou para adicionar uma chave primária para uma tabela e ter o trabalho atualizador corretamente (na medida em que lhe dará um erro de compilação sobre o código gerado) - mas para resolver o problema é uma questão simples de remover o modelo e re-importação (leva apenas um minuto) - isso é menos do que o ideal, obviamente, mas eu nunca tive uma falha de um 'fresco' importação.

A partir das demos do designer que eu vi, não é uma ferramenta impecável. É um produto versão 1.0, então ele é obrigado a ter alguns pontos de dor. O tipo de mudança é um deles parece. De ver o designer e a geração de código, achei que seria quebrar tanto em tempo de compilação (não provável) ou em tempo de execução (quando o modelo é realmente executada).

Você precisa excluir a coluna por si mesmo a partir do designer ou o arquivo XML.

Como mencionado antes, você pode simplesmente excluir a coluna do designer. Na medida em que a alteração do tipo de dados da coluna: basta atualizar o modelo do banco de dados, em seguida, ir para os mapeamentos de tabela e selecione a coluna que você mudou no DB. os valores à direita representam o seu modelo, curiosamente este não é atualizado automaticamente, mas basta selecionar a coluna à direita e vá para propriedades e alterar o tipo de dados lá. Deve tornar-se um menu suspenso.

Felicidades.

Ruddy

edifiquei aplicação semelhante como o seu pedido. Mas minha solução foi duro. Vou tentar dizer;

  1. Você tem que criar seus próprios clases de gestão de banco de dados e esses objetos serão responsáveis ??por criar, esquema de banco de dados de atualização (eu criei manualmente isso).

  2. Eu vi código bom artigo e fonte em ADO.NET equipe do blog então você também pode fazer download EDMTools a partir deste blog, é open source. E você também pode implementar geração de modelos e rotinas de atualização do que em seu projeto.

  3. Finalmente, quando o seu esquema mudou você deve recriar e ligam o seu modelo e reconstruir seus dados de montagem durante a execução. Mas você tem que saber pensar mais importante, você deve amarrar o seu modelo de dados de montagem para seu projeto com baixo acoplamento (confira este pós )

    Outra maneira, você deve esperar por EF versão 4.0 (que CTP 1 agora), eles anunciaram que eles irão fornecer criar, apagar, atualizar funções DatabaseScript.

Boa bloqueio

A maneira que eu estou fazendo isso (e eu estou fazendo todas as coisas que você menciona, além de renomear colunas) é fazendo alterações para o banco de dados e regenerar o código EF usando EF Code First.

Eu não estou mexendo com as EF Code First classes para o bem ou o mal (incluindo colunas nonsensically nomeados para as relações) para facilitar o processo.

No designer ou gerador de esquema ORM será capaz de fazer alterações em seu banco de dados de produção se tem limitado os dados nele. É por isso que você deve sempre começar com a verificação se as alterações ao DB são viáveis, julgá-los em um banco de dados de desenvolvimento e, em seguida, adaptar o seu código para refletir as alterações.

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