捕获的最佳方式"序列不包含任何元素"

时间:2015-04-16 14:55:14

标签: entity-framework entity-framework-6

如果Single找不到您期望存在的元素,则会抛出InvalidOperationException。唯一的麻烦是其他事情也会导致这种异常。例如,EF Code First模型已过期。

我试图通过检查异常消息来缩小范围。然而,这可能会改变,我不会更聪明。有没有更好的方法来解决这个问题?

   try
    {
        return DbSet.Single(filter);
    }
    catch (InvalidOperationException exc)
    {
        if (exc.Message == "Sequence contains no elements")
        {
            throw new UserNotFoundException();
        }

        throw;
    }

1 个答案:

答案 0 :(得分:4)

请改用.FirstOrDefault()。然后检查结果是否为null。如果是,则找不到用户。