13
ho una riga proveniente dal databaseDapper più oggetti da una riga
select "John" Name,
"Male" Gender,
20 Age,
"Rex" PetName,
"Male" PetGender,
5 PetAge
// ... many more ...
Utilizzando Dapper, mi piacerebbe tirare questa riga in due oggetti:
class Person
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
// ... many more ...
}
class Pet
{
public string PetName { get; set; }
public string PetGender { get; set; }
public int PetAge { get; set; }
// ... many more ...
}
Nota: non c'è nessuna relazione gerarchica qui, sto semplicemente cercando di mappare una riga del database in due (o più) oggetti.
Come posso farlo usando dapper?
- So che posso farlo restituendo una dinamica e mappando manualmente ogni oggetto, che è doloroso come nel mio scenario abbiamo un gran numero di colonne. Preferirei non farlo. (E no, non può essere riprogettato per richiedere meno colonne.)
Quello che ho provato:
- Ho guardato in
QueryMultiple<Person,Pet>
, ma assume sto facendo funzionare più query. Nel mio scenario di vita reale, questa è una query molto costosa e mi piacerebbe solo eseguirla una volta. - Ho anche cercato di restituire
Query<Person,Pet,Tuple<Person,Pet>>
, ma questo richiede una colonnaId
, qui non esiste una relazione gerarchica oId
s. Voglio solo prendere una singola riga e mapparla a più colonne.
mi sto perdendo qualcosa? Anche quando fornisco 'splitOn', ottengo ancora' ArgumentException: quando usi le API multi-mapping assicurati di impostare il parametro splitOn se hai chiavi diverse da Id. Nome parametro: splitOn' –
è strano. potrebbe essere necessario mostrarci la query sql esatta e il codice. non è probabile ma forse il tuo campo SplitOn esiste anche nel primo tipo, e vuoi includerlo nel secondo tipo, per caso? –
Hai ragione, quando lo uso con questo scenario giocattolo, funziona perfettamente. Dovrò scavare e capire dove le mie cose stanno andando male nel mio vero codice. –