C'è un modo di usare MultiMapping e QueryMultiple insieme in Dapper?

dapper

Domanda

Ho alcune domande che devo eseguire insieme e posso farlo utilizzando la funzione QueryMultiple .

Ma in questo caso non sono stato in grado di scoprire come potrei usare MultiMapping .

Qualcuno conosce un modo per raggiungere questo?

Risposta accettata

Penso che questo sia quello che stai cercando anche se è difficile da dire senza un esempio della query che stai cercando di eseguire.

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

Fondamentalmente il metodo di Read di SqlMapper.GridReader è simile al metodo di estensione Query . Si ottiene solo il parametro splitOn con uno degli overload che richiede più di due tipi generici.


Risposta popolare

Ecco un breve esempio tratto da un altro thread: how-to-get-values-for-child-objects

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

Ogni query restituisce un insieme di oggetti che possono quindi essere mappati alle entità.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché