2011-07-29 11 views
6

Używamy Dappera do mapowania naszych danych sql i jak na razie działa bardzo dobrze. Mam jednak przypadek, w którym robimy coś podobnego do:Obsługa Dapper zwróciła pusty zestaw wyników

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).Single(); 

Działa to świetnie, o ile procedura składowana, którą wywołuję, zwraca dane. Są chwile, w których procedura składowana może nie zwracać wyniku i zwracać błąd w parametrze out. Wydaje się, aby spowodować problem w Dapper ponieważ elegancki wyrzuca błąd:

„Podczas korzystania z API multi-mapping zapewnić ustawienie param splitOn jeśli masz klucze inne niż id”

Czy istnieje sposób napisania kwerendy, aby poprawnie obsługiwać przypadku, gdy zwracany jest pusty wynik lub jest to ograniczenie Dapper?

+1

Mam otwarty problem Google Code na to do dalszego dyskusja: http://code.google.com/p/dapper-dot-net/issues/detail?id=57 – TodK

+0

Dla tych, którzy mogą natknąć się na to pytanie, znalazłem [tę odpowiedź] (http: // stackoverflow. com/questions/11720611/how-to-return-null-from-a-dapp er-query-raczej-niż-defaultt) pomocne. –

Odpowiedz

1

SingleOrDefault() jest Twój przyjaciel tutaj

Spróbuj tego:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).SingleOrDefault(); 
if (someObject != null) 
{ 
    // operate on your results here 
} 
return someObject; 

również musisz upewnić T jest Nullable

+0

Jeśli istnieje możliwość, że SPROC może zwrócić listę , wówczas SingleOrDefault rzuci wyjątek. W takim przypadku najlepiej użyć FirstOrDefault. Zobacz dokumentację Dapper: http://dapper-tutorial.net/querysingleordefault – maurocam

Powiązane problemy