Seleccionar etiquetas de publicación con Dapper dot net

c# dapper orm sql sql-server

Pregunta

Tengo tres tablas en mi base de datos. Publicación, etiqueta y PostTag. Las tablas de etiquetas y publicaciones tienen una relación Muchos a muchos y debido a esa tabla PostTag creada.

Mi pregunta es cómo puedo seleccionar todas las publicaciones en mi tabla con sus etiquetas y el resultado del mapa a mi entidad POCO con Dapper.net.

Aquí están mis clases de poco Enviar:

public class Post
{
    public long Id { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }

    public virtual ICollection<Tag> Tags { get; set; }
}

Etiqueta:

public class Tag
{
    public long Id { get; set; }
    public string Title { get; set; }

    public virtual ICollection<Post> Posts { get; set; }
}

Quiero seleccionar todas las publicaciones con todas las etiquetas relacionadas para cada publicación. Quiero saber cómo puedo obtener un resultado como esta consulta ef: _context.Posts.Include (x => x.Tags) .ToList ()

Respuesta popular

Dapper es solo una biblioteca de mapeo de objetos, y usted debería escribir SQL o Procedimientos almacenados sin procesar. Por ejemplo:

var sql = 
@"
select Id, Title, Body from Post where Id = @id
select Id, Title from Tag t join PostTag pt on pt.TagId = p.Id where pt.PostId = @id";

using (var multi = connection.QueryMultiple(sql, new {id=postId}))
{
   var post = multi.Read<Post>().Single();
   var tags= multi.Read<Tag>().ToList();
   post.Tags = tags;
} 

Y de manera similar con el mapeo de publicaciones a etiquetas.



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é