Sélectionnez les tags de poste avec Dapper dot net

c# dapper orm sql sql-server

Question

J'ai trois tables dans ma base de données. Post, Tag et PostTag. Les tables Tag et Post ont une relation Many To Many et à cause de la création de la table PostTag.

Ma question est de savoir comment puis-je sélectionner tous les articles de ma table avec ses balises et mapper les résultats à mon entité POCO avec Dapper.net.

Voici mes cours de poco. Poster:

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; }
}

Marque:

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

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

Je souhaite sélectionner tous les articles avec tous les tags associés à chaque article. Je veux savoir comment obtenir un résultat comme cette requête ef: _context.Posts.Include (x => x.Tags) .ToList ()

Réponse populaire

Dapper est juste une bibliothèque de mappage d'objet, et vous devez écrire vous-même des procédures SQL ou stockées brutes. Par exemple:

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;
} 

Et de la même manière avec les articles de mappage aux balises.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi