相关疑难解决方法(0)

如何使用EF6和SQL Server捕获UniqueKey Violation异常?

我的一个表有一个唯一的密钥,当我尝试插入一个重复的记录时,它会按预期抛出异常.但我需要区分唯一的密钥异常,以便我可以为唯一的密钥约束违规自定义错误消息.

我发现所有的解决方案在网上提出投ex.InnerExceptionSystem.Data.SqlClient.SqlException和检查,如果Number属性等于2601或2627,如下所示:

try
{
    _context.SaveChanges();
}
catch (Exception ex)
{
    var sqlException = ex.InnerException as System.Data.SqlClient.SqlException;

    if (sqlException.Number == 2601 || sqlException.Number == 2627)
    {
        ErrorMessage = "Cannot insert duplicate values.";
    }
    else
    {
        ErrorMessage = "Error while saving data.";
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题是,铸造ex.InnerExceptionSystem.Data.SqlClient.SqlException原因无效的转换错误,因为ex.InnerException实际上是一个类型的System.Data.Entity.Core.UpdateException,不是System.Data.SqlClient.SqlException.

上面的代码有什么问题?如何捕获Unique Key Constraint违规?

c# sql-server exception-handling unique-key entity-framework-6

44
推荐指数
5
解决办法
4万
查看次数

实体框架中的重复关键异常?

我正在尝试捕获当我将具有给定用户名的已存在用户插入我的数据库时抛出的异常.正如标题所说,我正在使用EF.当我尝试将用户插入到db时抛出的唯一异常是"UpdateException" - 如何提取此异常以识别它是重复的异常还是别的?

c# entity-framework exception

28
推荐指数
5
解决办法
2万
查看次数