如何从Asp.net 5中的DbUpdateException中检索异常编号

时间:2015-12-04 23:46:50

标签: asp.net asp.net-core-mvc

我宁愿不进行字符串比较,看起来我的exeption数字在InnerExeption数字字段中,但如果我尝试直接访问它,我会遇到构建错误。

try {
    db.SaveChanges();
} catch (Microsoft.Data.Entity.DbUpdateException ex) {
    // ex.InternalException.Number won't compile but appears to be there

    // ex.InternalException.Message does compile but I think it seems less clean than a const comparison
}

一旦我确实得到了数字,那么我可以将它与它进行比较吗?我试图检查重复的密钥错误。

由于

1 个答案:

答案 0 :(得分:2)

我找到了办法。

db.User.Add(user);
try {
    db.SaveChanges();
} catch (Microsoft.Data.Entity.DbUpdateException ex) {
    if (((System.Data.SqlClient.SqlException)ex.InnerException).Number == 2627) {
        return new HttpStatusCodeResult(409);
    }
}