2014-09-21 5 views
7

Ho un'applicazione web che utilizza la classe SqlHelper della vecchia scuola.Come ottenere SqlDataReader con Dapper?

Desidero creare la mia personalizzata SqlHelper che utilizza Dapper sotto. Quindi, come posso ottenere SqlDataReader da Dapper?

+0

Non sono esperto dapper, ma dapper è stato creato per funzionare su object layer (è Micro ORM) e non è preoccupato per le solite roba di ado.net tra cui SqlDataReader. – reptildarat

+0

@reptildarat, lo so. Ma ho bisogno di questo per una ragione. – user960567

risposta

9

esiste un metodo ExecuteReader che si porge di nuovo i dati-reader che la connessione ha generato: si può lanciare questo se si sa che è in realtà un SqlDataReader. In questo scenario, dapper elabora solo i parametri e l'iniezione letterale.

using(var reader = (SqlDataReader) 
    conn.ExecuteReader(sql, args)) 
{ 
    // use reader here 
} 

Sono, tuttavia, più che un po 'incuriosito da ciò che si vuole SqlHelper farlo Dapper non già fare (ma meglio). Vera domanda: mi piace migliorare la libreria. Se c'è un buco, fammi sapere.

+1

Grazie. Esiste anche ExecuteReaderAsync? – user960567

+1

@user yes - nella build .NET 4.5 –

+0

In realtà, classe SqlHelper creata da team di modelli e pratiche Microsoft nel progetto di libreria aziendale. Molte applicazioni utilizzano questa classe ed è molto buona in termini di prestazioni, ma questa classe manca di supporto asincrono ed è molto vecchia (2002). Dapper è molto buono nelle prestazioni e supporta async. La cosa bella di SqlHelper è che dobbiamo solo passare connString, SPName e paramters. Ora ho bisogno di sbarazzarsi di SqlHelper. Quindi lo sto convertendo in dapper. Il modo più rapido per convertire la mia parte di accesso ai dati sarà quello di avvolgere la funzionalità interna all'interno di una classe SqlHelper personalizzata. – user960567