我想知道如何从C#中的SQL Server错误代码中识别主键重复错误。
例如,我有一个C#表单将数据输入到SQL Server数据库中,当数据输入过程中发生错误时,我如何从异常中确定错误的原因?
发布于 2017-08-17 05:36:16
在实体框架的情况下,接受的答案将不起作用,错误最终将不会被捕获。这是一段测试代码,只有entity catch语句会被命中,当然还有通用的异常if entity语句被移除:
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;
}
发布于 2019-04-09 17:31:54
仅筛选重复主键作废异常的工作代码
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
https://stackoverflow.com/questions/15217711
复制相似问题