c# - Net5 mysql 访问重复错误代码
问题描述
我正在尝试在 WebAPI 服务中显示重复记录错误消息。我正在使用 .net5 和 mysql。我似乎找不到从异常响应中提取 duplicateEntry 消息的方法。我想键入 ErrorCode 字段并使用它来定制对用户的响应。我可以看到 Message 属性,但无法弄清楚如何访问 innerException。
{
try
{
module.Id = Guid.NewGuid();
await _moduleRepository.Add(module);
await _uow.CompleteAsync();
return true;
}
catch (DbUpdateException ex)
{
logger.LogWarning("Module - Add Error: " + ex.Message);
return false;
}
}
解决方案
找到了一些有用的东西。做了一个辅助函数,但是这个是高度耦合到Mysql的。必须检查 InnerException 以查看它是否属于 MsyqlException 类型。
{
public static string GetExceptionMessage(Exception ex)
{
var message = ex.Message;
var innerException = ex.InnerException;
if (innerException != null && (innerException.GetType() == typeof(MySqlException)))
{
var dbException = (MySqlException)innerException;
if(dbException.ErrorCode == MySqlErrorCode.DuplicateKeyEntry)
{
return ErrorMessages.RecordExists;
} else
{
return ErrorMessages.UnknownError;
}
}
return message;
}
}
推荐阅读
- ios - Coredata 问题:未解决的错误:Error Domain=NSSQLiteErrorDomain Code=778 "(null)"
- android - 构建“groovy.lang.MissingMethodException:没有方法签名”时出错
- testng - 如何根据测试类型在测试运行中使用不同/特定的“拆卸方法”
- line - Halcon - 从 XLD 中提取直边
- python - Django - 将两个模型传递到一个视图中,并显示两个模型
- python - python正则表达式返回空字符串
- python - Seaborn:在点图中绘制多色点而不用断线
- django - 会话 ID 在重定向 django 和 docker 上发生更改
- node.js - Node.js Cheerio 返回空且没有错误
- c - 指针处的增量错误中的左值无效