Intentando entender Dapper Multi Mapping

c# dapper

Pregunta

He estado revisando la documentación de Asignación múltiple de Dapper, pero sigo confundido.

Este es el ejemplo de la documentación de Dapper

class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public User Owner { get; set; }
}

class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

var sql = 
@"select * from #Posts p 
left join #Users u on u.Id = p.OwnerId 
Order by p.Id";

var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post;});
var post = data.First();

Lo que me confunde es de dónde provienen la post variable y el user ? Veo en esta línea ...

connection.Query<Post, User, Post>

esa Post y el User son los modelos y entiendo eso ...

(post, user) => { post.Owner = user; return post;}

es una función que define el mapeo, pero ¿dónde se instancian las post y el user ?

Respuesta aceptada

Es una función Lambda. No sé la explicación técnica, pero básicamente connection.Query devuelve múltiples registros, cada uno contiene una publicación y un usuario según la consulta. Con (publicación, usuario) => está declarando que la publicación representará la publicación y el usuario representará al usuario de cada registro.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué