Olá Pessoal!
Estou implementando um Repositório Genérico em ADO.NET sem ORM, porem estou tendo problemas no mapeamento dos registro para as propriedades das classes, quando essa propriedade é do tipo de outra classe de forma genérica, para exemplificar melhor segue abaixo:
Abaixo a Classe Departamento
namespace Gebram.Dominio.Entidades
{
public class Departamento : BaseEntity
{
#region Propriedades
public int CodDepto { get; set; }
public String Descricao { get; set; }
public char Ativo { get; set; }
#endregion
#region Construtores
public Departamento() { }
#endregion
}
}
Abaixo a Classe Ramo. Nota-se que existe a propriedade Departamento do tipo classe Departamento
namespace Gebram.Dominio.Entidades
{
public class Ramo : BaseEntity
{
#region Propriedades
public int CodRamo { get; set; }
public String Descricao { get; set; }
public char Ativo { get; set; }
public Departamento Departamento { get; set; }
#endregion
#region Construtores
public Ramo()
{
this.Departamento = new Departamento();
}
#endregion
}
}
Eu tenho uma classe BaseRepositorio que faz a execução da consulta do Banco de forma genérica
namespace Gebram.Dados.Repositorios
{
public class BaseRepositorio<TEntity> where TEntity : class
{
protected List<TEntity> LoadAll(String query, SqlParameter[] Parametros, CommandType tipoDeComando)
{
List<TEntity> result = null;
try
{
//Cria Comando
using (SqlCommand cmd = new SqlCommand(query, _conn))
{
//tipo de comando
cmd.CommandType = tipoDeComando;
//inclui os parâmetros no comando
cmd.Parameters.AddRange(Parametros);
using (SqlDataReader dr = cmd.ExecuteReader())
{
result = new List<TEntity>();
while (dr.Read())
{
result.Add(Map(dr));
}
}
}
}
catch (Exception erro)
{
throw erro;
}
return result;
}
}
Chamada do Map
public override Ramo Map(SqlDataReader dr)
{
Ramo ramo = new Ramo();
ramo.CodRamo = base.FormataResultado(ramo.CodRamo, dr, "INT_CODRAMO");
ramo.Descricao = base.FormataResultado(ramo.Descricao, dr, "CHR_DESCRICAO");
ramo.Ativo = base.FormataResultado(ramo.Ativo, dr, "CHR_ATIVO");
ramo.Departamento = ??????????????????????
return ramo;
}
E a pergunta é a seguinte como fazer de maneira genérica que o Map consiga buscar os dados da classe Ramo e percorrer ate a propriedade Departamento e também obter os dados do Departamento ???
Ramo objRamo = new Ramo();
objRamo.Departamento.CodDepto
Será que eu tenho utilizar a lógica do Parent and Child ? AutoMapper ?
Alguém será que poderia me ajudar neste grande dilema que estou tendo no meu projeto ?
Abraços.