如果Single
找不到您期望存在的元素,则会抛出InvalidOperationException
。唯一的麻烦是其他事情也会导致这种异常。例如,EF Code First模型已过期。
我试图通过检查异常消息来缩小范围。然而,这可能会改变,我不会更聪明。有没有更好的方法来解决这个问题?
try
{
return DbSet.Single(filter);
}
catch (InvalidOperationException exc)
{
if (exc.Message == "Sequence contains no elements")
{
throw new UserNotFoundException();
}
throw;
}
答案 0 :(得分:4)
请改用.FirstOrDefault()
。然后检查结果是否为null。如果是,则找不到用户。