Olá amigos,
tenho algumas dúvidas sobre desenvolvimento em camadas e vou tentar dividir minhas dúvidas em partes pequenas de forma que quem puder ajudar, não tenha uma monte de perguntas dentre de um único post.
Minha primeira dúvida é sobre o relacionamento dos objetos em uma aplicação, tenho estudado o modelo de desenvolvimento em camadas, onde na DTO ficam apenas as classes sem comportamento nenhum, camada DAL onde os métodos de acesso ao banco de dados são escritos, camada BLL onde devem ser escritas as regras de negócio e finalmente a UI que é a interface do usuário, até aqui tudo parece bem para que esta aprendendo a trabalhar em OOP e em camadas, logicamente que tenho visto vários outros padrões mas estou tentando aprofundar neste, nem sei se este é o padrão mais indicado para certos cenários e nem sei ainda se existe algum outro que esteja "mais na moda" ou seja melhor.
Como disse, as classes se relacionam, em alguns exemplos a Classe Cliente tem um atributo que é uma outra Classe que é a Classe Dependente que por sua vez tem uma outra classe como atributo que é a Classe TipoDependente, só ai temos 3 classes que tem um relacionamento que está sendo um espelho de como esta modelado no Banco de dados, ai chaga a dificuldade, estou usando ADO.NET puro para acessar e manipular os dados e tenho tido algumas dificuldades ao tentar carregar atributos de classes associadas, no meu primeiro exemplo de dificuldade tenho o seguinte:
Utilizo uma datareader para carregar atributos das minhas Classes, mas um dos atributos esta em outras Classes, como Acesso???
public IList<DTO.Cliente> ListAll()
{
SqlConnection conn = new SqlConnection(Dados.Conexao.ToString());
SqlCommand Cmd = new SqlCommand("sp_SelectAllClientes", conn);Cmd.CommandType= CommandType.StoredProcedure;
IDataReader dr;IList<DTO.Cliente> NovoCliente = new List<DTO.Cliente>();
conn.Open();
dr = Cmd.ExecuteReader();
while (dr.Read())
{
DTO.Cliente UmCliente = new DTO.Cliente();UmCliente.clienteID = (int)dr[0];
UmCliente.nomeCliente = dr[1].ToString();
UmCliente.endereco = dr[2].ToString();
UmCliente.bairro = dr[3].ToString();
UmCliente.telefone = dr[4].ToString();
UmCliente.dataNascimento = dr.GetDateTime(5);
//O problema esta nesta Linha como acesso o atributo que esta duas sub Classes abaixo???
UmCliente.cidade.estado.Sigla = dr[6].ToString();
NovoCliente.Add(UmCliente);
}
dr.Close();
return NovoCliente;
}
grato,
Edmilson