Jam*_*mes 3 c# sql-server entity-framework exception asp.net-core
当标签已存在于标签表中时,我将其插入,因此它返回消息,
消息“无法在具有唯一索引“IX_Tag_Name”的对象“dbo.Tag”中插入重复的键行。重复的键值为 (Lemon)。\r\n该语句已终止。” 细绳
我尝试通过检查Number2601 来捕获此唯一异常,但无法访问该Number属性。
显然,这就是您应该捕获异常但ex.InnerException.InnerException 为空的方式,因此 switch 语句永远不会执行。
如何使用 EF6 和 SQL Server 捕获 UniqueKey 违规异常?
catch (DbUpdateException ex)
{
if (ex.InnerException.InnerException is SqlException sqlException)
{
switch (sqlException.Number)
{
// If the tag already exists
case 2601: // Unique Key violation
}
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码正在检查内部异常的内部异常。这是空的,因此你的代码失败了。相反,做:
catch (DbUpdateException ex)
{
if (ex.InnerException is SqlException sqlException)
{
switch (sqlException.Number)
{
// If the tag already exists
case 2601: // Unique Key violation
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2920 次 |
| 最近记录: |