c# - 如何使用 Spliton 和类型映射复杂对象?

标签 c# dapper

我正在尝试返回包含您当前的“Endereco”的“Pessoa”列表 使用 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。我怎样才能完成我的方法?

最佳答案

它会是这样的

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

关于c# - 如何使用 Spliton 和类型映射复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273494/

相关文章:

c# - Dapper 对象加上上下文

c# - 有 Dapper executenonquery 吗?我怎么知道我的更新是否有效?

c# - 使用 MVP-VM 设计模式在 Presenter 中正确使用模型

mysql - Dapper 与 MySQL 和 ASP.NET CORE 2 - 插入模型失败

PostgreSQL,Npgsql 返回 42601 : syntax error at or near "$1"

c# - 关于 PostgreSQL 的 Dapper SQL 查询和参数的问题

c# - ajax beginForm 忽略指定按钮

c# - 从任务栏隐藏我的应用程序

c# - 将 Ado.net DataReader 转换为 IDataRecord 给出奇怪的结果

c# - 在 Azure 应用服务上使用客户端证书提交 SSL HttpWebRequest