Existe-t-il un moyen d'utiliser MultiMapping et QueryMultiple dans Dapper?

dapper

Question

J'ai quelques questions à poser ensemble et je peux le faire en utilisant la fonctionnalité QueryMultiple .

Mais dans ce cas, je n'ai pas pu savoir comment utiliser MultiMapping .

Est-ce que quelqu'un sait comment y parvenir?

Réponse acceptée

Je pense que c'est ce que vous cherchez bien qu'il soit difficile de dire sans un exemple de la requête que vous essayez d'exécuter.

var sql = @"Select * 
            From Parent 
            Left Join Child on Child.ParentID = Parent.ParentID 
            Where Parent.ParentID = @id
            ... more queries";

using(var reader = connection.QueryMultiple(sql, new {id=selectedId}))
{
    var stuff = reader.Read<Parent, Child, Parent>(
        (p,c)=> 
        {
            p.Child = c;
            return p;
        }, splitOn: "ChildId").Single();
    // Continue to read from the other queries in your sql.
}

Fondamentalement, la méthode Read du SqlMapper.GridReader est similaire à la méthode d'extension Query . Vous obtenez uniquement le paramètre splitOn avec l'une des surcharges qui nécessite plus de deux types génériques.


Réponse populaire

Il y a un exemple rapide tiré d'un autre thread: comment obtenir des valeurs pour des objets-enfants

var sql = 
@"
select * from PROFILES where profileId= @id
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id";

using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
   var profile = multi.Read<Models.PROFILE>().Single();
   profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList();
} 

Chaque requête renvoie un ensemble d'objets qui peuvent ensuite être associés à vos entités.




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