Mam następujący kod. Pojawia się błąd:
„Przekazanie do typu wartości„ Int32 ”nie powiodło się, ponieważ zmaterializowana wartość jest pusta. Albo parametr ogólny typu wyniku, albo zapytanie musi używać typu zerowego.”
gdy tabela CreditHistory nie ma rekordów.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Jak mogę zmodyfikować zapytanie, aby akceptowało wartości puste?
Aby zezwolić na
Amount
pole zerowalne , wystarczy użyć operatora koalescencji zerowej, aby przekonwertować wartości zerowe na 0.źródło
int?
pierwszej.Amount
jestint
, to jesteśmy już pewni, że nie może być zerowy, a łączenie nie jest konieczne. JeśliAmount
pojawia się błąd, który powiedziałeś, to nie jest on zerowalny, to po prostuint
, w takim przypadku być może musisz zmienić kolumnę dbq linq2sql w projektancie, aby zezwolić na wartości null.Używasz
aggregate
funkcji, która nie zmusza elementów do wykonania akcji, musisz sprawdzić, czy zapytanie linq daje jakiś wynik, jak poniżej:źródło
Miałem ten komunikat o błędzie, gdy próbowałem wybrać z widoku.
Problem polegał na tym, że widok zyskał ostatnio kilka nowych pustych wierszy (w kolumnie SubscriberId) i nie został zaktualizowany w EDMX (najpierw baza danych EF).
Kolumna musiała być typu Nullable, aby działała.
var dealer = Context.Dealers.Where (x => x.dealerCode == dealerCode) .FirstOrDefault ();
Przed odświeżeniem widoku:
Po odświeżeniu widoku:
Usuwanie i dodawanie widoku z powrotem w EDMX działało.
Mam nadzieję, że to komuś pomoże.
źródło
Użyłem tego kodu i odpowiada on poprawnie, tylko wartość wyjściowa jest zerowa.
źródło
Widzę, że na to pytanie już udzielono odpowiedzi. Ale jeśli chcesz, aby został on podzielony na dwie wypowiedzi, można rozważyć następujące.
źródło
Dostałem ten błąd w Entity Framework 6 z tym kodem w czasie wykonywania:
Aktualizacja LeandroSoares:
Użyj tego do pojedynczego wykonania:
Oryginalny:
Zmieniłem to i wtedy zadziałało:
źródło
Miałem też do czynienia z tym samym problemem i rozwiązałem, tworząc kolumnę jako zerowalną za pomocą „?” operator.
Czasami zwracana jest wartość null.
źródło