Ich habe den folgenden Code. Ich erhalte eine Fehlermeldung:
"Die Umwandlung in den Werttyp 'Int32' ist fehlgeschlagen, da der materialisierte Wert null ist. Entweder der generische Parameter des Ergebnistyps oder die Abfrage müssen einen nullbaren Typ verwenden."
wenn die CreditHistory-Tabelle keine Datensätze enthält.
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();
Wie kann ich die Abfrage so ändern, dass sie Nullwerte akzeptiert?
Um ein nullbares
Amount
Feld zuzulassen , verwenden Sie einfach den Null-Koaleszenzoperator, um Nullen in 0 zu konvertieren.quelle
int?
zuerst hinzuzufügen .Amount
istint
, sind wir uns bereits sicher, dass es nicht null sein kann, und das Zusammenführen ist nicht erforderlich. Wenn Sie den Fehler erhalten, den Sie gesagt haben,Amount
ist er nicht nullbar, sondern nur ein Fehler.int
In diesem Fall müssen Sie möglicherweise Ihre linq2sql-DBML-Spalte im Designer ändern, um Nullen zuzulassen.aggregate
Wenn Sie eine Funktion verwenden, bei der die Elemente nicht zum Ausführen einer Aktion aufgefordert werden, müssen Sie sicherstellen, dass die Linq-Abfrage ein Ergebnis wie folgt liefert:quelle
Hatte diese Fehlermeldung, als ich versuchte, aus einer Ansicht auszuwählen.
Das Problem war, dass die Ansicht kürzlich einige neue Nullzeilen (in der Spalte SubscriberId) erhalten hatte und in EDMX (EF-Datenbank zuerst) nicht aktualisiert wurde.
Die Spalte musste vom Typ Nullable sein, damit sie funktioniert.
var Dealer = Context.Dealers.Where (x => x.dealerCode == DealerCode) .FirstOrDefault ();
Vor dem Aktualisieren der Ansicht:
Nach Ansichtsaktualisierung:
Das Löschen und Hinzufügen der Ansicht in EDMX hat funktioniert.
Hoffe es hilft jemandem.
quelle
Ich habe diesen Code verwendet und er reagiert korrekt, nur der Ausgabewert ist nullwertfähig.
quelle
Ich sehe, dass diese Frage bereits beantwortet ist. Wenn Sie jedoch möchten, dass es in zwei Anweisungen aufgeteilt wird, kann Folgendes in Betracht gezogen werden.
quelle
Ich habe diesen Fehler in Entity Framework 6 mit diesem Code zur Laufzeit erhalten:
Update von LeandroSoares:
Verwenden Sie dies für eine einzelne Ausführung:
Original:
Geändert und dann hat es funktioniert:
quelle
Ich hatte auch das gleiche Problem und wurde gelöst, indem die Spalte mit "?" Operator.
Manchmal wird null zurückgegeben.
quelle