none
Estrutura de Projetos ASPX + EF RRS feed

  • Pergunta

  • Olá Pessoal,

    Não sei ao certo se o que estou fazendo é uma pergunta, mas acho que este tópico poderá mais "virar" uma discussão...

    O caso é que... Estou passando a utilizar (e finalmente entender) o funcionamento do Entity Framework (vlw Renato Haddad)...

    E estou com um questionamento...

    Quando desenvolvo ASP.NET "normal" eu faço da seguinte forma...

    Crio uma Solution com os seguintes projetos:

    • Interface (Onde irão ficar as minhas páginas)
    • BLL (Minha camada de negócios)
    • DAL (Minha camada de acesso a dados)
    • DTO (Que são os objetos que uso para representar as tabelas do meu banco de dados, cujas informações são manipuladas pela Interface e Persistidas no banco pela DAL, através da BLL) (O projeto Interface só tem referência para a BLL e DTO, não encherga a DAL)

    Como o EF faz para mim o trabalho de ser meu Modelo (DTO) e a persistência dos dados do modelo (DAL), como faço para ter a minha camada de regras de negócio (BLL)???

    Vocês costumas separar isso em projetos?!

    Agradeço imensamente a atenção de todos vc's...

    Um grande abraço!

    Jefferson.

    sexta-feira, 23 de dezembro de 2011 12:46

Respostas

Todas as Respostas

  • Boa questão Jefferson...
    sexta-feira, 23 de dezembro de 2011 13:30
  • Eu costumo separar deste jeito que você faz. A diferença é que DTO não é utilizado para representar as tabelas do meu banco. Isto Eu já tenho no model do EF. Um DTO uso justamente para retornar um objeto com propriedades que preciso. Por exemplo: ao exibir informações no gridview você não precisa trazer duas ou mais tabelas carregadas. Para isto Eu crio uma classe DTO que vai ter somente as propriedades que preciso.

    A BLL continua com o papel dela. Recebe dados da interface, valida alguma coisa e repassar para a DAL. A DAL envia algo para a BLL e a BLL para a interface.

    ps: aqueles videos do Renato Had. são bons né?


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    sexta-feira, 23 de dezembro de 2011 13:32
  • Cara... Foi vc mesmo que me passou os vídeos... Vlw... São excelentes...

    Então... Mas como ficaria isso numa Solution... E como ficaria um método na BLL...

    Vc receberia o Contexto via parâmetro... E retornaria o contexto com as modificações da BLL para a interface?!

    Só precisaria ver a coisa funcionando... Pra tirar uma base...

    sexta-feira, 23 de dezembro de 2011 13:51
  • O contexto via parametro? Nunca. Via parametro somente a Entidade carregada.

    O contexto só a dal que vai usar.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    sexta-feira, 23 de dezembro de 2011 14:04
  • O contexto via parametro? Nunca. Via parametro somente a Entidade carregada.

    O contexto só a dal que vai usar.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.


    Tem como mandar um print de como fica uma Solution?

    E um exemplo de código dessa BLL e DAL?

    Grato,

    Jefferson.

    sábado, 24 de dezembro de 2011 15:24
  • Algo assim:


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 26 de dezembro de 2011 11:56
  • Olá Jefferson,

    Eu costumo criar minhas aplicações do mesmo modo que o Paulo César.

    Faço isso pela possibilidade de diminuir as dependências entre as camadas do meu projeto, para que quando eu precisar mudar alguma tecnologia eu consiga fazer isso de modo bastante fácil.

    Lhe envio dois links que podem lhe ajudar:

    http://ferhenriquef.wordpress.com/2011/11/26/construindo-sua-camada-de-acesso-a-dados-com-o-entity-framework-4-1/

    http://ferhenriquef.wordpress.com/2011/10/25/entity-framework-4-1-mvc-dao/

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    • Marcado como Resposta Jefferson Balivo quarta-feira, 28 de dezembro de 2011 12:58
    segunda-feira, 26 de dezembro de 2011 22:51
    Moderador
  • Hum... Interessante...

    Estou analisando a possibilidade de não usar POCO...

    Comprei uns Livros e um material de EF... Tem umas coisas muito interessantes usando o modo de design...

    A ajuda foi muito bem vinda e me esclareceu muitas dúvidas...

    quarta-feira, 28 de dezembro de 2011 12:58
  • Se precisar de ajuda com o Entity Framework é só entrar em contato =]

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 28 de dezembro de 2011 22:09
    Moderador
  • Fernando, 

         Você já tem este exemplo http://ferhenriquef.com/2011/10/25/entity-framework-4-1-mvc-dao/ na versão EF 5.0 e MVC 4 ?

    att.,

    Clever

    quarta-feira, 14 de novembro de 2012 00:13
  • Olá Clever,

    Tudo bem?

    Não tenho este exemplo com EF 5 e MVC 4.

    Aqui tem um exemplo com o EF 5: http://ferhenriquef.com/2012/07/07/ef-code-first-design-patterns-asp-net-multi-camadas-e-muito-trabalho/

    Aqui tem alguns links uteis:

    http://channel9.msdn.com/Shows/Web+Camps+TV/Rowan-Miller-Demonstrates-Entity-Framework-5-Using-ASPNET-MVC-4

    http://www.codeproject.com/Articles/468777/Code-First-with-Entity-Framework-5-using-MVC4-and

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 14 de novembro de 2012 00:17
    Moderador
  • Obrigado pela resposta Fernando !!

    Aproveitando queria lhe fazer outra perguta, estou estudando estas tecnologias acima para fazer um ERP, onde eu terei modulos financeiro, controle de acesso, compras, vendas, etc. e dentro dos modulos as funcionaldiades propriamente ditas, ou seja, os CRUDs. A minha dúvida é: como seria a melhor forma de estruturar o projeto de forma que tenha menor tenha menor impacto na manutenção de funcionalidade em produção ? Vou lhe passar um exemplo, imagine  que eu tenha uma funcionalidade de recebimento de caixa (proveniente do modulo financeiro) com um bug e necessite de manunteção imediata, ou seja, há uma maneira de publicar uma versão corrigida desta funcionalidade sem ter impacto em todo modulo financeiro ou até mesmo no sistema como um todo ?

    att.,

    Clever almeida

    quinta-feira, 15 de novembro de 2012 16:29
  • Olá Clever,

    Neste caso, acredito que o melhor seja vc dividir em class libraries o comportamento e as regras de negócios de cada módulo da sua aplicação.

    Com relação a sua manutenção causar impacto na aplicação... Sempre que temos um site rodando em um diretório virtual qualquer alteração no diretório bin fará com que o diretório virtual se atualize, derrubando a aplicação por alguns intantes, recompilando e então voltando ao seu funcionamento normalmente.

    Mas, é possível substituir uma DLL sem que a sua aplicação reinicie. Vc pode fazer isso via reflection... Que obrigaria vc a ler um arquivo físico (no caso uma DLL) para instânciar uma classe dinamicamente.

    Mas, para fazer isso do jeito correto, acredito que vc terá de usar um design pattern chamado Factory, que é uma classe responsável por criar instâncias de outras classes. No caso, sua classe factory ficaria responsável por encapsular a leitura via reflection e criar as instâncias corretamente para trabalhar 'on the fly'.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 15 de novembro de 2012 23:44
    Moderador