Gibt es eine Möglichkeit, Multiapping und QueryMultiple in Dapper zusammen zu verwenden?

dapper

Frage

Ich habe ein paar Abfragen, die ich zusammen ausführen muss, und ich kann das QueryMultiple Feature verwenden.

Aber in diesem Fall konnte ich nicht herausfinden, wie ich MultiMapping verwenden könnte .

Kennt jemand einen Weg, dies zu erreichen?

Akzeptierte Antwort

Ich denke, das ist, was Sie suchen, obwohl es schwer ist, ohne ein Beispiel der Abfrage, die Sie ausführen möchten, zu sagen.

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

Grundsätzlich ähnelt die Read Methode des SqlMapper.GridReader der Query Erweiterungsmethode. Sie erhalten den splitOn Parameter nur mit einer der Überladungen, die mehr als zwei generische Typen benötigt.


Beliebte Antwort

Es gibt ein kurzes Beispiel aus einem anderen Thread: how-to-get-values-für-Kind-Objekte

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

Jede Abfrage gibt eine Reihe von Objekten zurück, die dann Ihren Entitäten zugeordnet werden können.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum