Fondamentalmente, voglio usare la sintassi Dapper "carina" per una stored procedure, senza dover utilizzare manualmente exec MySproc @p1, @p2, @p3, @p4
e così via, ma ho bisogno di essere in grado di passare in un oggetto fortemente tipizzato con varie proprietà impostate e avere questo oggetto essere utilizzato per mappare i parametri. So che posso farlo con un oggetto anonimo, ma lo scenario che sto pensando sarebbe qualcosa di simile a un modulo di ricerca complesso in cui diversi campi possono essere cercati, e la stored procedure corrispondente può avere molti parametri (molti con i valori predefiniti).Dapper supporta oggetti fortemente tipizzati con una stored procedure?
Idealmente avrei voluto essere in grado di fare qualcosa del genere:
var cust = new Customer();
cust.FirstName = ...
cust.LastName = ...
// using .NET 3.5 so need to use ugly syntax :(
var result = connection.Query<Customer>("MySproc", cust, null, false, null, CommandType.StoredProcedure).Single();
tuttavia, che non funziona e genera un errore perché il mio oggetto cliente può avere una dozzina o più proprietà, e ho sto solo cercando due in questo caso; Dapper sembra semplicemente controllando ogni proprietà e assegnando un valore, supponendo che ci sia un parametro corrispondente nella sproc quando potrebbe non esserci.
Posso fare qualcosa di simile a questo utilizzando PetaPoco (passaggio in un oggetto fortemente tipizzato o un oggetto anonimo) ma sto cercando qualcosa di un po 'più astratto di PetaPoco.
È quello che voglio fare in Dapper (o un altro micro-ORM? Non posso usare NHibernate o un ORM pesante), o c'è un modo che sto trascurando per ottenere la stessa funzionalità a corto di dover scrivere un dichiarazione di exec con quello che potrebbe essere una dozzina di parametri?
Questo è ciò di cui avevo paura, poiché l'utilizzo degli oggetti anonimi mi impedisce di creare un oggetto dinamicamente in base agli input. L'idea del metodo helper è interessante, però. –
@WayneM vedi la mia modifica ... –
Ora sembra interessante. Dovrò giocarci e vedere come funziona. Molto apprezzato, Sam! –