O que meus métodos da DAL devem retornar?
Olá a todos.
Pessoal, estou desenvolvendo em C# com Windows Forms utilizando o conceito de MVC, mas estou enfrentando uma dúvida referente ao o que meus métodos de busca devem retornar.
Digamos que eu tenho uma grid no meu form e quero poder preenche-lo chamando um método da minha camada DAL (ou DAO).
Digamos que esta grid deve ser populada com uma lista de Clientes.
Eu poderia executar a query e devolver um DataTable já populado para minha grid fazendo grid.DataSource = dal.metodoQueDevolveDataTable(); ou eu poderia devolver uma lista de objetos Cliente.. ( List<Cliente>() ).
Ao meu ver, como estou desenvolvendo em 3 camadas, acho que o mais correto é sempre trabalhar somente com meus objetos, não sair recebendo ou devolvendo nos meus métodos tipos como DataSet ou DataTable.
Porém, usando DataSet e DataTable eu tenho a vantagem de conseguir relacionar os DataTable, trabalhar com os dados em memória, etc... ( Como se fosse um ClientDataSet do Delphi ).
Se tiver alguma forma (prática) de receber um List<Cliente> e atribuir para um DataTable que está vinculado a um DataSet do meu form, e eu trabalhar em tela com o DataTable seria uma solução para o meu problema.
Não sei se consegui me explicar bem. Qualquer dúvida só perguntar.
Obrigado !
Gustavo Marcon
Curtidas 0
Respostas
Vinicius Mesquita
03/09/2010
Boas,
Não vejo problema algum do jeito que você pretende "bindar" o seu GridView, de qualquer jeito você criará uma espécie de "dependência" das camadas, eu criaria um objeto na controller que receberia um DataSet/DataTable já mapeados e na View teria um ObjectDataSource vinculado ao meu GridView, setando no controller o dado recebido da Model. Creio que não existe "certos" e "errados" para se solucionar um problema. Existe sim, vantagens e desvantagens( Essa é minha opinião, OK?).
Sugiro que você de uma olhada neste artigo bem interessante que aborda exatamente o tema que você procura esclarecer: http://msdn.microsoft.com/en-us/library/Ee817644(pandp.10).aspx
Espero ter ajudado.
Sugiro que você de uma olhada neste artigo bem interessante que aborda exatamente o tema que você procura esclarecer: http://msdn.microsoft.com/en-us/library/Ee817644(pandp.10).aspx
Espero ter ajudado.
GOSTEI 0