Dapper c # unión interna

c# dapper dapper-extensions

Pregunta

Hola, estoy intentando hacer esa consulta en dapper, pero la lista contatos regresa con los valores nulos para mi clase. Cliente, no sé lo que estoy haciendo mal. mi clase Clt_cadCliente es un cliente tiene varios contactos (clt_cadContatos). Ayuda por favor.

var lookup = new Dictionary<int, Clt_cadCliente>();

            cn.Query<Clt_cadCliente, Clt_cadContatos, Clt_cadCliente>(@"
                            SELECT s.*, a.*
                            FROM Clt_cadCliente s
                            INNER JOIN Clt_cadContatos a ON s.IdCLiente = a.IdCliente  ", (s, a) =>
                            {
                                Clt_cadCliente shop;
                                if (!lookup.TryGetValue(s.IdCliente, out shop))
                                {
                                    lookup.Add(s.IdCliente, shop = s);
                                }
                                shop.Clt_cadContatos.Add(a);
                                return shop;
                            }, splitOn: "IdCliente").AsQueryable();

            var resultList = lookup.Values;

Clase:

public partial class Clt_cadCliente
{
    public int IdCliente { get; set; }
    public Nullable<int> IdClientePai { get; set; }
    public string Codigo { get; set; }
    public string Nome { get; set; }
    public Nullable<System.DateTime> DataNasc { get; set; }
    public string Sexo { get; set; }
    public Nullable<int> IdEstCivil { get; set; }
    public string CPF { get; set; }
    public string RG { get; set; }
    public Nullable<System.DateTime> DataAdm { get; set; }
    public bool Pendencias { get; set; }
    public string DescPendencia { get; set; }
    public string Obs { get; set; }
    public string PessoaFJ { get; set; }
    public string NomeFantasia { get; set; }
    public string CodDep { get; set; }
    public string AtivoInativo { get; set; }
    public bool Ativado { get; set; }
    public Nullable<int> IdSitBloq { get; set; }
    public Nullable<int> SitBloq { get; set; }
    public string Profissao { get; set; }
    public string Empresa { get; set; }
    public string NomeEsposa { get; set; }
    public Nullable<System.DateTime> NascEsposa { get; set; }
    public Nullable<int> IdNaturezaPadrao { get; set; }
    public Nullable<int> ViaCarteirinha { get; set; }
    public Nullable<int> Casa { get; set; }
    public Nullable<int> Renda { get; set; }
    public Nullable<int> RendaComplementar { get; set; }
    public string Naturalidade { get; set; }
    public string Banco { get; set; }
    public string Agencia { get; set; }
    public string CidadeBanco { get; set; }
    public bool VeiculoProprio { get; set; }
    public Nullable<System.DateTime> DIB { get; set; }
    public string Foto { get; set; }
    public string Nbeneficio { get; set; }
    public Nullable<bool> LiberarExame { get; set; }
    public Nullable<System.DateTime> ValidadeExame { get; set; }
    public Nullable<int> EnviaBoleto { get; set; }
    public Nullable<int> IdUsuario { get; set; }
    public Nullable<long> IdClienteGlobal { get; set; }
    public virtual IList<Clt_cadContatos> Clt_cadContatos { get; set; }
}

Clase 2:

public partial class Clt_cadContatos
{
    public int IdContato { get; set; }
    public string Nome { get; set; }
    public string Telefone { get; set; }
    public string Email { get; set; }
    public bool AdicionarLista { get; set; }
    public Nullable<int> IdCliente { get; set; }
}

Respuesta popular

Estás dividiendo el parámetro incorrecto. Necesita dividir en IdContato .

La división en el campo le dice a Dapper dónde termina una entidad y comienza la siguiente. Si selecciona s.* Seguido de a.* Desea dividir en una segunda entidad en el primer campo de la tabla a (supongo que sus tablas sql se parecen a sus clases).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué