捕获 DbUpdateException 并查找是否是 UniqueValidationError ?

问题描述 投票:0回答:1

我正在捕获 DBUpdateExcdeption。我的目的是检查是否存在唯一验证错误。

我尝试将 InnerExcdeption 转换为 SqlException 但没有成功。

public static bool IsExceptionUniqueConstraintViolation(Exception ex)
{
    var sqlException = ex.InnerException as SqlException;

    if (sqlException.Number == 2601 || sqlException.Number == 2627)
       return true;

    return false;
}

出了什么问题?

c# entity-framework exception
1个回答
0
投票

内部异常很可能不是

SqlException
,因此
as
转换将失败(请参阅 as 操作员文档)。当转换失败时,结果将为空。

当您有嵌套异常时,可能有超过 1 层的嵌套,因此您可能有不止一级的

SqlException
- 如果异常是,您可以假设内部异常将是
SqlException
由库中的代码抛出。

© www.soinside.com 2019 - 2024. All rights reserved.