none
Entity em ModelFirst + DataAnnotations é possível? RRS feed

  • Pergunta

  • Galera, estou com uma dúvida...

    É o seguinte, estou iniciando no fantástico mundo do Entity.

    Estou aprendendo o modo Model First. Ou seja, construo o diagrama

    do banco e o entity cria as tabelas e faz tudo.

    Porém, eu gostaria de adicionar algumas DataAnnotations personalizadas

    às classes que o entity criou.

    Por exemplo, eu queria adicionar tags de Required, ErrorMessage, pois

    vou vincular os atributos da classes às minhas views, no ASP.NET

    Porém, toda vez que eu faço uma atualização no modelo, todo o código é sobrescrito.

    Então, tenho que refazer todas DataAnnotations novamente.

    Alguém sabe se é possível contornar este problema?

    terça-feira, 27 de outubro de 2015 10:23

Respostas

  • Bom dia Vinicius, tudo bem?

    Sim, é possível, mas vc teria que separar essas classes POCO em um projeto a parte, copiando as classes geradas e deixando isoladas...é bem trabalhoso por isso não gosto do Model First.

    Uma saída!

    Fuja dessa abordagem onde o Entity Framework cria as coisas sozinho, por um lado é bom pela produtividade que se ganha, porém a manutenção se torna um pouco mais morosa. Eu recomendo SEMPRE trabalhar com classes POCO em Code First, independente se existe o banco de dados previamente ou não, pois você tem controle TOTAL do que está sendo gerado ou administrado e principalmente controle da configuração do DbContext, se simplesmente usar o EF com sua configuração padrão, dependendo do cenário, pode ser que a performance seja brutalmente prejudicada.

    Sobre usar Data Annotations, depende muito, o sistema será grande? pois usar DA requer dependência do EF na sua camada e domínio. O que segundo boas práticas de programação não é algo legal, se for um projeto pequeno, não vejo problema usar por DA.

    Mas minha opinião é: Sempre use EF Code First e Fluent API, é mais trabalhoso, porém você terá seu BD "na mão".

    Se é projeto novo, Code First Fluent API

    Este artigo escrevi para o blog .NET Coders

    http://netcoders.com.br/blog/mapeamento-com-entity-framework-code-first-fluent-api-parte-1/

    Se a base de dados já existe, recomendo esse artigo do Eduardo Pires onde mostra o EF Code First partindo de uma base existente:

    http://eduardopires.net.br/2015/03/ef-code-first-partindo-de-uma-base-existente/



    terça-feira, 27 de outubro de 2015 10:56

Todas as Respostas

  • Bom dia Vinicius, tudo bem?

    Sim, é possível, mas vc teria que separar essas classes POCO em um projeto a parte, copiando as classes geradas e deixando isoladas...é bem trabalhoso por isso não gosto do Model First.

    Uma saída!

    Fuja dessa abordagem onde o Entity Framework cria as coisas sozinho, por um lado é bom pela produtividade que se ganha, porém a manutenção se torna um pouco mais morosa. Eu recomendo SEMPRE trabalhar com classes POCO em Code First, independente se existe o banco de dados previamente ou não, pois você tem controle TOTAL do que está sendo gerado ou administrado e principalmente controle da configuração do DbContext, se simplesmente usar o EF com sua configuração padrão, dependendo do cenário, pode ser que a performance seja brutalmente prejudicada.

    Sobre usar Data Annotations, depende muito, o sistema será grande? pois usar DA requer dependência do EF na sua camada e domínio. O que segundo boas práticas de programação não é algo legal, se for um projeto pequeno, não vejo problema usar por DA.

    Mas minha opinião é: Sempre use EF Code First e Fluent API, é mais trabalhoso, porém você terá seu BD "na mão".

    Se é projeto novo, Code First Fluent API

    Este artigo escrevi para o blog .NET Coders

    http://netcoders.com.br/blog/mapeamento-com-entity-framework-code-first-fluent-api-parte-1/

    Se a base de dados já existe, recomendo esse artigo do Eduardo Pires onde mostra o EF Code First partindo de uma base existente:

    http://eduardopires.net.br/2015/03/ef-code-first-partindo-de-uma-base-existente/



    terça-feira, 27 de outubro de 2015 10:56
  • Olá, Diego.. Nó legal, obrigado por suas orientações.

    Estarei estudando seu artigo e te falo se houver algumas dúvidas.

    Bom, meu projeto é novo, eu pretendo desenvolver um sistema de

    compra e venda de veículos na web. Já registrei domínio .

    Pretendo usar ASP.NET base de dados SQL Server.

    por enquanto, está tudo no 0. Estou aprendendo, assisti

    as aulas virtuais do ASP.Net que o Haddad leciona no MVA e

    um curso de Entity que tem lá também, porém, é meio fraquinho.

    Aprendi mais com o Haddad no curso em que o foco é ASP.

    do que no curso com foco propriamente do entity kkk.

    Então cara, eu já tenho algumas manhas na programação sabe, porém, é mais no Desktop (mas mesmo assim ainda não consegui empreender o modelo MVVM com toda clareza que se deve kkk)

    Ai, eu estou estudando sobre o ASP e as coisas todas pra tentar ver se finalmente consigo desenvolver um sistema realmente profissional em termos de desenvolvimento.

    Será que você poderia me dar mais algumas dicas para que eu consiga alcançar este objetivo, de desenvolver um site realmente nos melhores padrões e paradigmas de desenvolvimento?

    Como te falei, o projeto está no zero 0, então é tranquilo pra mim.. 

    terça-feira, 27 de outubro de 2015 11:45
  • Opa, Vinicius, então...

    antes de começar seu projeto, dê uma olhada nessa vídeo aula do Eduardo Pires, tudo que você precisa pra desenvolver um bom projeto está nesse vídeo!

    Alguns temas abordados:

    DDD
    ASP.NET MVC 5
    EF Code First
    Injeção de Dependência

    Veja:
    http://eduardopires.net.br/2014/10/tutorial-asp-net-mvc-5-ddd-ef-automapper-ioc-dicas-e-truques/

    terça-feira, 27 de outubro de 2015 12:36
  • No mano, show de bola. Vou fazer o download do video e assistir em casa.

    Pow, Vlw, Diego.

    Muito obrigado por sua ajuda cara.

    Aqui.. você tem skype ou algo assim?

    Quando meu site estiver com a base pronta, eu te falo pra você dar uma olhada como ficou (constará seu nome nos agradecimentos, pode crê?)


    terça-feira, 27 de outubro de 2015 12:52
  • Bacana, me adiciona no face, acho mais fácil kkkk

    https://www.facebook.com/diegoneves.drummer


    terça-feira, 27 de outubro de 2015 12:55
  • Eu não tenho facebook, por incrível que pareça kkk

    Tenho email e skype, só.

    Se não fica muito online no skype, me passa seu email, se possível.

    terça-feira, 27 de outubro de 2015 12:57
  • Ah beleza,

    me adiciona lá Diego Neves ou diegoneves89@hotmail.com

    terça-feira, 27 de outubro de 2015 13:07
  • Blza, vlw. já marquei sua resposta como a correta. ;p

    Vlw brow

    terça-feira, 27 de outubro de 2015 13:36