none
Implementando Repository Pattern ADO.NET Como Mapear Registros de Classes que tem Propriedades do Tipo de uma Classe RRS feed

  • Pergunta

  • 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.


     


    • Editado diego-araujo sexta-feira, 13 de abril de 2018 20:13 Alteração nome título
    sexta-feira, 13 de abril de 2018 20:05