Mam aplikację internetową, która używa starej szkoły SqlHelper
klasy.Jak zdobyć SqlDataReader z Dapper?
Chcę utworzyć niestandardową SqlHelper
, która używa Dapper pod spodem. Jak mogę uzyskać SqlDataReader
od Dappera?
Mam aplikację internetową, która używa starej szkoły SqlHelper
klasy.Jak zdobyć SqlDataReader z Dapper?
Chcę utworzyć niestandardową SqlHelper
, która używa Dapper pod spodem. Jak mogę uzyskać SqlDataReader
od Dappera?
Istnieje metoda ExecuteReader
, która przekazuje czytelnikowi dane, że połączenie wygenerowane: można rzucić to, jeśli wiesz, że faktycznie jest SqlDataReader
. W tym scenariuszu dapper przetwarza jedynie parametry i literalną iniekcję.
using(var reader = (SqlDataReader)
conn.ExecuteReader(sql, args))
{
// use reader here
}
Jestem jednak bardziej niż trochę intryguje, co chcesz zrobić SqlHelper
że Dapper nie już zrobić (ale lepiej). Prawdziwe pytanie: lubię ulepszać bibliotekę. Jeśli jest luka, daj mi znać.
Dzięki. Czy istnieje również ExecuteReaderAsync? – user960567
@user yes - w .NET 4.5 build –
Właściwie klasa SqlHelper stworzona przez zespół Microsoft ds. Wzorców i praktyk w projekcie biblioteki korporacyjnej. Wiele aplikacji używa tej klasy i jest bardzo dobra w działaniu, ale ta klasa nie ma asynchronicznego wsparcia i jest bardzo stara (2002). Dapper ma bardzo dobrą wydajność, a także obsługuje asynchroniczne. Wielką zaletą SqlHelper jest to, że wystarczy przekazać connString, SPName i parametry. Teraz muszę pozbyć się SqlHelper. Więc zamieniam to na elegancję. Najszybszym sposobem przekonwertowania części dostępu do danych będzie zawarcie wewnętrznej funkcjonalności wewnątrz niestandardowej klasy SqlHelper. – user960567
Nie jestem bystrym ekspertem, ale dapper jest stworzony do pracy na warstwie obiektów (to Micro ORM) i nie martwi się zwykłymi materiałami ado.net, w tym SqlDataReader. – reptildarat
@reptildarat, wiem. Ale potrzebuję tego z jakiegoś powodu. – user960567