I'm trying to return a "Pessoa" List with your current "Endereco" using Dapper.
public class Pessoa
{
public string tipoPessoa { get; set; }
public string nome { get; set; }
public string sobreNome { get; set; }
public string emailAdress { get; set; }
public Endereco endereco { get; set; }
}
public class Endereco
{
public int id { get; set; }
public string cep { get; set; }
public string logradouro { get; set; }
public string bairro { get; set; }
public string cidade { get; set; }
public string complemento { get; set; }
}
My Method:
public IEnumerable<Pessoa> List()
{
var QUERY = @"SELECT P.Id, P.Nome, P.SobreNome, P.Email, P.IdTipoPessoa,
E.Bairro, E.Cep, E.Cidade, E.Complemento, E.Id, E.Rua as Logradouro
FROM Pessoa P
INNER JOIN PessoaEndereco PE on P.Id = PE.IdPessoa
INNER JOIN Endereco E on PE.IdEndereco = E.Id ";
using (var conexao = new SqlConnection(strConexao))
{
return conexao.Query<Pessoa>(QUERY,
splitOn: "IdTipoPessoa",
//Mapping
);
}
}
I know it's possible using Types
, Mapping
and SplitOn
. How can I finish my method?
It will be something like
using (var conexao = new SqlConnection(strConexao))
{
return conexao.Query<Pessoa, Endereco, Pessoa>(QUERY,
splitOn: "IdTipoPessoa",
map: (p, e) => {
p.endereco = e;
return p;
}
);
}
More details can be found in this article I've written on the subject: