Как отобразить сложный объект, используя Сплитон и Типы? - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь вернуть список "Pessoa" с вашим текущим "Endereco", используя 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; }
}

Мой метод:

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
          );
      }
    }

Я знаю, что это возможно, используя Types, Mapping и SplitOn.Как я могу закончить мой метод?

1 Ответ

0 голосов
/ 11 мая 2018

Это будет что-то вроде

using (var conexao = new SqlConnection(strConexao))
{
  return conexao.Query<Pessoa, Endereco, Pessoa>(QUERY,
    splitOn: "IdTipoPessoa",
    map: (p, e) => {
      p.endereco = e;
      return p;
    }
  );
}

Более подробную информацию можно найти в этой статье, которую я написал на эту тему:

https://medium.com/dapper-net/multiple-mapping-d36c637d14fa

...