如何使用Spliton和Types映射复杂对象?

时间:2018-05-10 12:57:47

标签: c# dapper

我试图回归" Pessoa"列出您当前的#34; 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
          );
      }
    }

我知道可以使用TypesMappingSplitOn。我怎样才能完成我的方法?

1 个答案:

答案 0 :(得分:2)

这将是

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