MVC3 e EF Data primeiro: quais são as melhores práticas?

9

Parece que a maior parte do foco com MVC3 e EF4.1 está em torno de "código primeiro" - não consigo encontrar nenhum exemplo ou tutorial que atenda aos seguintes critérios:

  • usa um banco de dados SQLServer existente
  • tem projetos separados para web & amp; acesso a dados (teremos vários aplicativos da Web compartilhando as mesmas classes de acesso a dados)
  • recomendações para validação

Esse exemplo ou tutorial existe? Há alguma "melhor prática" documentada de como realizar isso, ou a justificativa para NÃO ter uma solução estruturada dessa maneira?

    
por chris 05.07.2011 в 17:31
fonte

1 resposta

5

É um cenário bastante comum e depende se você deseja usar o arquivo EDMX para mapeamento ou se deseja ter o mapeamento definido no código (como o código primeiro).

Ambos os cenários podem ser feitos como banco de dados primeiro

  • Você criará o EDMX a partir do banco de dados existente com o build nas ferramentas EF no Visual Studio e usará o modelo gerador do DbContext T4 para obter as classes POCO e derivadas do DbContext
  • Você fará o download do EF Power Tools CTP e você usará seu recurso de engenharia reversa para gerar mapeamento de código, classes POCO e contexto para você

Nenhuma dessas abordagens adicionará anotações de dados. As anotações de dados em entidades não devem ser usadas para validação do cliente (isso é uma prática ruim), a menos que você esteja fazendo aplicativos muito simples. Normalmente, suas visualizações têm expectativas mais avançadas e a validação em vista pode ser diferente da entidade. Por exemplo, a visualização de inserção e a visualização de atualização podem precisar de validações diferentes e não é possível realizá-la com um único conjunto de anotações de dados na entidade. Por isso, você deve mover anotações de dados para validação para modelos de visualização especializados e transformar suas entidades para exibir modelos e vice-versa (você pode usar o AutoMapper para simplificar isso).

De qualquer forma, é possível adicionar anotações de dados a gerou classes via classes de amigos, mas como mencionado, não é uma boa prática.

    
por Ladislav Mrnka 05.07.2011 / 18:07
fonte