首页 > 解决方案 > 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;
            }
            
            
        } 

在此处输入图像描述

标签: c#mysql.net-5

解决方案


找到了一些有用的东西。做了一个辅助函数,但是这个是高度耦合到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;
        }
    }

推荐阅读