none
Ignorar diferenças entre modelo e banco de dados RRS feed

  • Pergunta

  • Pessoal,

    Meu cenário é o seguinte:

    Estou construindo uma aplicação usando domínio rico mapeando para o EF4 com CTP5. O domínio da aplicação é construído ao longo de todo o desenvolvimento usando TDD.

    Qual o meu problema:

    Sempre que adiciono uma nova propriedade a qualquer entidade, é gerada uma exceção devido a discrepância entre o modelo (classes mapeadas) e o esquema do banco.

    Sei que é possível ignorar propriedades explicitamente com notações/configurações. Também sei que é possível recriar automaticamente o banco quando existem alterações no modelo, mas gostaria de saber se existe uma forma de configurar o ef para ignorar automaticamente as novas proriedades do modelo. Esse é o comportamento padrão com mapeamento fluente no NHibernate por exemplo.

    Abraços!


    Denis Ferrari - "Faça pouco, faça sempre e faça direito"
    www.denisferrari.com

    Blogs
    www.heroisdati.com
    www.minhacarreira.com
    sexta-feira, 29 de abril de 2011 14:28

Respostas

  • Olá Denis,

    Acredito que não exista uma configuração para oq vc precisa, pois as configurações possíveis são:

    CreateDatabaseIfNotExists: Não efetua nenhuma alteração no banco de dados se ele já existe, mas acarreta no erro que vc esta recebendo.

    DropCreateDatabaseIfModelChanges: Essa opção apaga o banco se seu schema mudou.

    DropCreateDatabaseAlways: Essa opção sempre apaga o banco de dados.

     

    Acredito que o melhor seja fazer o download do Entity Framework Code First 4.2 e ver as features existentes no Entity Framework Code Migration (eu estou estudando esta feature agora :) ).

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    segunda-feira, 9 de janeiro de 2012 18:15
    Moderador
  • Olá Denis,

    Outra possibilidade é não permitir fazer da seguinte forma:

    Database.SetInitializer(null);
    

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    sexta-feira, 13 de janeiro de 2012 11:09
    Moderador

Todas as Respostas

  • Conseguiu resolver isso ? Ninguém sabe?
    segunda-feira, 9 de janeiro de 2012 17:46
  • Olá Denis,

    Acredito que não exista uma configuração para oq vc precisa, pois as configurações possíveis são:

    CreateDatabaseIfNotExists: Não efetua nenhuma alteração no banco de dados se ele já existe, mas acarreta no erro que vc esta recebendo.

    DropCreateDatabaseIfModelChanges: Essa opção apaga o banco se seu schema mudou.

    DropCreateDatabaseAlways: Essa opção sempre apaga o banco de dados.

     

    Acredito que o melhor seja fazer o download do Entity Framework Code First 4.2 e ver as features existentes no Entity Framework Code Migration (eu estou estudando esta feature agora :) ).

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    segunda-feira, 9 de janeiro de 2012 18:15
    Moderador
  • Olá Denis,

    Outra possibilidade é não permitir fazer da seguinte forma:

    Database.SetInitializer(null);
    

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    sexta-feira, 13 de janeiro de 2012 11:09
    Moderador