INNER JOIN COM DAPPER E LIST<T>

 Tópico anterior Próximo tópico Novo tópico

INNER JOIN COM DAPPER E LIST<T>

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#497014 - 21/05/2021 23:32:05

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Boa noite,

Pessoal, como ficaria select inner join com dapper sendo a segunda tabela uma list<t>,

o que eu sei fazer é o seguinte, tem duas classes

Cliente{ int id, string Nome , int Idade } Vendas {int IdVenda, int IdCliente, string Tipo, string Valor, cliente _Cliente }

var sql = 'select c.*, v.* from table_cliente as c inner join table_venda as v on v.IdCliente =c.Id;';
var res = await conexao.QueryAsync<Vendas, Cliente, Vendas>(sql, (v, c) => { v._Cliente = c; return v; } splitOn:'IdVenda');

Porem, e se o senário mudasse,

tenho a classe Cliente e Classe Contato,

contato { int Id, string Valor } - cliente { int Id, List<contato> _Contato }

Como faria um join do cliente e retornasse uma lista de contato do cliente?? como ficaria essa query e a construção do dapper


__________________________________
- Everyone has a chance


#497015 - 22/05/2021 00:23:37

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Última edição em 22/05/2021 00:23:50 por NOWLIGHTS

Consegui;

   var lookup = new Dictionary<int, Cliente>();
                    var sql = 'SELECT c.*, n.Id AS 'ConId', n.* FROM cliente AS c ' +
                        'INNER JOIN cliente_contatos AS n ON n.IdCliente = c.Id ';
                    var res = await cn.QueryAsync<Cliente, Contato, Cliente>(sql, (c, n) =>
                    {
                        Cliente cliente;
                        if (!lookup.TryGetValue(c.Id, out cliente))
                        {
                            lookup.Add(c.Id, cliente = c);
                        }
                        if (cliente._Contato == null)
                            cliente._Contato = new List<Contato>();
                        cliente._Contato.Add(n);
                        return cliente;
                    }, splitOn: 'ConId'
                    );
                    var x = lookup.Values.ToList();
                    return null;



__________________________________
- Everyone has a chance


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por NOWLIGHTS em 22/05/2021 19:37:28