Usuário com melhor resposta
Dúvida de OOP com C#

Pergunta
-
Prezados
Estamos com uma dúvida, creio eu que mais relacionada a OOP do que a C# propriamente dito mas gostaria de ouvir a opinião de vocês.
CENÁRIO:Imaginem um cadastro de PESSOAS onde neste cadastro poderei veicular a cada pessoas os veículos que a mesma possuí.Minha UI chama um SERVIÇO que por sua vez chamará a camada BLL que chamará a DAL que por fim a MODEL.No projeto na camada MODELS eu tenho 2 entidades: PESSOA e VEICULO_PESSOA sendo que cada uma destas, tem suas propriedades e o RETORNO DAS MESMAS É UMA COLEÇÃO.
Na minha camanda BLL terei situações que:
1) Precisarei retornar apenas a coleção PESSOAS;2) Precisarei retornar a coleção PESSOAS e também a coleção VEICULO_PESSOA referente a cada pessoa da coleção pessoa;
Em tese: Preciso retornar a coleção de pessoas com seus respectivos veículos.
Pensando em OOP e boas práticas qual seria a forma correta de se tratar esta situação?Agradeço a atenção!
Eduardo Agostinho Analista Programador - C# Developer
Respostas
-
Eduardo,
Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz
Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa
Faça na classe Pessoal uma propriedade para a coleção de Veiculos
public class Pessoa { List<Veiculo_Pessoa> Veiculos; }
E pensando em OOP, sem duvida nenhuma é a melhor solução
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.- Marcado como Resposta EAgostinho quarta-feira, 19 de setembro de 2012 18:25
Todas as Respostas
-
Eduardo, Boa tarde
De uma olhada no Entity Framework, se no seu banco de dados essas estidades estão estão ligadas, o proprio entity já vai fazer isso para você
http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
Prezado Bruno, agradeço a atenção.
Concordo com sua observação, mas na verdade não utilizamos o Entity Framework visto que nossa aplicação pode utilizar vários tipos de bancos, sendo assim, nossa classe de acesso ao banco utiliza DbProviderFactory e de acordo com o tipo de banco instancio um objeto de acesso a dados baseado em um contrato.
A dúvida está no retorno visto que utilizo WCF e em alguma situações vou retornar apenas a PESSOA em outras vou retornar a PESSOA e os VEÍCULOS da mesma. Se meu retorno é uma coleção como tratá-lo?
Uma sugestão que me deram, foi de criar uma propriedade _veiculoPessoa dentro da entidade PESSOA que retornará a COLEÇÃO -> CLASSE VEÍCULO_PESSOA na própria classe PESSOA.
Espero que tenha conseguido explicar.
Aguardo sugestões
Eduardo Agostinho Analista Programador - C# Developer
-
Eduardo,
Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz
Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa
Faça na classe Pessoal uma propriedade para a coleção de Veiculos
public class Pessoa { List<Veiculo_Pessoa> Veiculos; }
E pensando em OOP, sem duvida nenhuma é a melhor solução
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.- Marcado como Resposta EAgostinho quarta-feira, 19 de setembro de 2012 18:25
-
Eduardo,
Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz
Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa
Faça na classe Pessoal uma propriedade para a coleção de Veiculos
public class Pessoa { List<Veiculo_Pessoa> Veiculos; }
E pensando em OOP, sem duvida nenhuma é a melhor solução
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.É isso ai deu certo...
obrigado mais uma vez!!!Eduardo Agostinho Analista Programador - C# Developer