首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从SQL Server 2008错误码中识别主键重复?

如何从SQL Server 2008错误码中识别主键重复?
EN

Stack Overflow用户
提问于 2013-03-05 15:02:44
回答 2查看 39.6K关注 0票数 26

我想知道如何从C#中的SQL Server错误代码中识别主键重复错误。

例如,我有一个C#表单将数据输入到SQL Server数据库中,当数据输入过程中发生错误时,我如何从异常中确定错误的原因?

EN

回答 2

Stack Overflow用户

发布于 2017-08-17 05:36:16

在实体框架的情况下,接受的答案将不起作用,错误最终将不会被捕获。这是一段测试代码,只有entity catch语句会被命中,当然还有通用的异常if entity语句被移除:

代码语言:javascript
复制
try
{
    db.InsertProcedureCall(id);
}
catch (SqlException e0)
{
   // Won't catch
}
catch (EntityCommandExecutionException e1)
{
    // Will catch
    var se = e1.InnerException as SqlException;
    var code = se.Number;
}
catch (Exception e2)
{
   // if the Entity catch is removed, this will work too
    var se = e2.InnerException as SqlException;
    var code = se.Number;
}
票数 0
EN

Stack Overflow用户

发布于 2019-04-09 17:31:54

仅筛选重复主键作废异常的工作代码

代码语言:javascript
复制
using System.Data.Entity.Infrastructure;
using System.Data.SqlClient;
.........

 try{
    abc...
    }
    catch (DbUpdateException ex)
                {
                    if (ex.InnerException.InnerException is SqlException sqlEx && sqlEx.Number == 2601)
                    {
                        return ex.ToString();
                    }
                    else
                    {
                        throw;
                    }
                }

注意细节:- ex.InnerException.InnerException而不是ex.InnerException

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15217711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档