实体框架6.1重复唯一索引异常处理

时间:2014-05-15 08:31:52

标签: entity-framework-6.1

如何在实体框架6.1中使用duplicate key row with unique index属性处理[Index(IsUnique = true)] SqlException?

2 个答案:

答案 0 :(得分:4)

所以这是一个快速黑客

try
{
    context.SaveChanges();
}
catch (DbUpdateException e)
{
    SqlException innerException = null;
    Exception tmp = e;
    while(innerException == null && tmp!=null)
    {
        if (tmp != null)
        {
            innerException = tmp.InnerException as SqlException;
            tmp = tmp.InnerException;
        }

    }
    if (innerException != null && innerException.Number == 2601)
    {
        // handle exception
    }
    else
    {
        throw;
    }
}

我希望有更好的解决方案......

答案 1 :(得分:0)

您可以覆盖dbContext中的ValidateEntity并在此处执行逻辑。

我发布了有关如何在CodeProject中执行此操作的通用方法

<强> Validate a Unique Constraint at dbContext ValidateEntity in Entity Framework