我正在尝试返回包含您当前的“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
);
}
}
我知道可以使用Types
、Mapping
和SplitOn
。我怎样才能完成我的方法?
最佳答案
它会是这样的
using (var conexao = new SqlConnection(strConexao))
{
return conexao.Query<Pessoa, Endereco, Pessoa>(QUERY,
splitOn: "IdTipoPessoa",
map: (p, e) => {
p.endereco = e;
return p;
}
);
}
更多详细信息可以在我写的关于该主题的文章中找到:
关于c# - 如何使用 Spliton 和类型映射复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273494/