Wenn Single
das erwartete Element nicht findet, wird eine InvalidOperationException
. Das einzige Problem ist, dass andere Dinge auch zu dieser Ausnahme führen. Zum Beispiel ist ein EF-Code-First-Modell veraltet.
Ich habe versucht, es einzugrenzen, indem ich die Ausnahmebedingung überprüfte. Aber das könnte sich ändern und ich wäre nicht klüger. Gibt es eine bessere Möglichkeit, dieses Problem zu lösen?
try
{
return DbSet.Single(filter);
}
catch (InvalidOperationException exc)
{
if (exc.Message == "Sequence contains no elements")
{
throw new UserNotFoundException();
}
throw;
}
Verwenden .FirstOrDefault()
stattdessen .FirstOrDefault()
. Überprüfen Sie dann, ob das Ergebnis null ist. Wenn dies der Fall ist, wurde der Benutzer nicht gefunden.