Obie metody zwracają po jednym rekordzie. Jaka jest więc między nimi różnica?
Zobaczmy na kawałek kodu i jego reprezentację w bazie MS SQL (zapytania wyciągnięte z Profilera):
Code:
SELECT TOP (2) [Extent1].[Id] AS [Id], [Extent1].[Nazwa] AS [Nazwa]FROM [dbo].[Pojazd] AS [Extent1]WHERE 100 = [Extent1].[Id]
SELECT TOP (1) [Extent1].[Id] AS [Id], [Extent1].[Nazwa] AS [Nazwa]FROM [dbo].[Pojazd] AS [Extent1]WHERE 100 = [Extent1].[Id]
Jak widać Single wybiera 2 rekordy a First tylko jeden. Dlaczego?
W przypadku Single pobierane są dwa pierwsze rekordy, które zwróci zapytanie. Następnie sprawdzane jest czy faktycznie jest jeden rekord, a w przypadku gdy są dwa rzucany jest wyjątek. W przypadku metody First wyjątek nie zostanie rzucony, jeżeli zapytanie zwróci więcej niż jeden wynik.
Ma to swoje zalety, w przypadku gdy musimy otrzymać tylko jeden wynik a z jakichś względów otrzymujemy więcej wyników. Korzystając z metody Single możemy szybciej zdiagnozować problemy, które mogą się objawić w aplikacji.
Brak komentarzy:
Prześlij komentarz