C#- und EF Core-Nullable-Type-Rückgabe im Vergleich zu nicht gefundenen oder mehreren DatenbankzeilenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C#- und EF Core-Nullable-Type-Rückgabe im Vergleich zu nicht gefundenen oder mehreren Datenbankzeilen

Post by Anonymous »

Ich habe den folgenden Anwendungsfall: Die Datenbank enthält eine Zeile mit einer Spalte, die Nullen zulassen kann, und ich möchte nur diesen Spaltenwert aus der Datenbank für eine einzelne Zeile anfordern.
Dies kann einfach mit dieser Linq-Abfrage erfolgen:

Code: Select all

var value = await context.Table
.Where(r => r.Id == recordId)
.Select(r => r.Field)
.SingleOrDefaultAsync();
Dies gibt den Spaltenwert oder „null“ zurück, wenn die Zeile nicht existiert.

Wenn das Feld also einen Wert hat, erhält man diesen Wert. Aber wenn die Spalte „null“ ist, erhalten Sie auch „null“.
Und hier tritt mein Problem ins Spiel: Ich möchte zwischen der Situation unterscheiden, in der der Spaltenwert „null“ ist, und der Situation, in der die Zeile nicht existiert (Fehler).
Sie können dies versuchen

Code: Select all

try
{
var value = await context.Table
.Where(r => r.Id == recordId)
.Select(r => r.Field)
.SingleAsync();
}
catch
{
throw new NotFoundException("");
}
Aber erstens würde ich mich lieber nicht darauf verlassen, die Ausnahme mit try/catch abzufangen, da wir normalerweise ein Task zurückgeben und nicht auf den Aufruf der Datenbank innerhalb der Funktion warten.
Und zweitens: Auf diese Weise können wir nicht zwischen nicht vorhandenen Zeilen und der Situation unterscheiden, in der wir möglicherweise mehrere Zeilen haben (bei Verwendung verschiedener Where-Klauseln).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post