Comment obtenir des valeurs pour des objets enfants à l'aide de Dapper ORM?

c#-4.0 dapper orm

Question

Je récupère les détails du profil avec les éléments suivants:

var profiles = connection.Query<Models.PROFILE>("SELECT * FROM PROFILES WHERE ID=@ID", new { ID = profileID }); // IEnumerable
var profile = profiles.First<Models.PROFILE>();

L'objet profile contient d'autres collections comme profileImages. Le problème est que le nombre d'éléments pour chaque objet enfant est zéro. Aussi, je veux seulement obtenir des données, disons, profileImages.

Y a-t-il quelque chose à définir pour interroger les objets enfants, et si oui, est-il possible de spécifier lequel et pour combien de niveaux?

J'ai aussi essayé le multimapping:

                var profiles = connection.Query<Models.PHOTOS_PERMISSIONS, Models.PROFILE, Models.PHOTOS_PERMISSIONS>(sql,
                    (p1, p2) => { p1.ID = profileID; return p1; }, 
                    new { ID = profileID }, 
                    splitOn: "OWNER_PROFILESIDFK, ID").AsQueryable();

PHOTOS_PERMISSIONS.OWNER_PROFILESIDFK = PROFIL.ID

Et obtenir l'erreur suivante:

Lorsque vous utilisez les API de mappage multiple, veillez à définir le paramètre splitOn si vous avez des clés autres que le nom du paramètre Id: splitOn

J'ai essayé des variantes de ce que contient mon texte splitOn, mais j'obtiens toujours la même erreur.

Réponse acceptée

Dapper ne prend pas en charge un mappage one-to-many comme celui-ci. Consultez cette question, mais cela peut aider.

Multi-cartographie, un à plusieurs

Si votre table PROFILEIMAGES a un FK sur PROFILES ID - vous pouvez émettre 2 requêtes et utiliser le GridReader.

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



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