我需要一种使用实体框架LINQ区分SQL异常的方法,例如,当我从DbUpdateException获得的所有信息都是大量嵌套的内部异常和无用的长错误消息时,如何区分前面的关键约束违例或唯一约束违例?是否有任何较低级别的例外,我可以在其中执行“ Catch FKException”之类的操作;捕获“ uniqueException”或类似的东西。
正在使用sql错误代码…
catch (DbUpdateException ex) { var sqlex = ex.InnerException.InnerException as SqlException; if (sqlex != null) { switch (sqlex.Number) { case 547: throw new ExNoExisteUsuario("No existe usuario destino."); //FK exception case 2627: case 2601: throw new ExYaExisteConexion("Ya existe la conexion."); //primary key exception default: throw sqlex; //otra excepcion que no controlo. } } throw ex; }