EF Core之SqlException处理
外键,唯一约束等对后端检查起到了很多的帮助,但有的时候需要后端直接将报错信息反馈给前端。这个时候直接返回SqlException就不合适了,需要对其进行翻译,返回可读的信息
-
EF Core的SqlException的全局处理还是要在DBContext里进行
-
SaveChanges就是我们要处理的地方,EF Core对应的Exception是DbUpdateException:
public override int SaveChanges(bool acceptAllChangesOnSuccess) { try { return base.SaveChanges(acceptAllChangesOnSuccess); } catch (DbUpdateException ex) { HandleDbUpdateException(ex); return 0; } } /// <summary> /// 统一处理数据库报的异常 /// </summary> /// <param name="ex">DbUpdateException</param> public void HandleDbUpdateException(DbUpdateException ex) { if (ex.InnerException is SqlException sqlException) { switch (sqlException.Number) { case 547: //外键报错 var fkErro
-