Единственный способ, которым я знаю, это поймать SqlException
и затем проверить свойство Number
. Это свойство является ярлыком для первого Error
в свойстве Errors
, и если вы беспокоитесь о возможности возникновения нескольких ошибок, вы можете использовать его вместо этого.
Как только вы узнаете номер ошибки sql, вы можете предоставить более удобное сообщение. К сожалению, я не знаю способа получить хороший список распространенных номеров ошибок сервера sql, кроме выполнения select * from sys.messages
, но поиск по ним может быть немного сложным.
Я заботился только о нескольких конкретных номерах ошибок и создал условия ошибок вручную, чтобы определить номера:
547 foreign key conflict
2601 unique index violation
2627 primary key violation
На любой другой номер ошибки я просто предоставляю общее сообщение, указывающее, что была проблема с базой данных. Во всех случаях я регистрирую информацию об исключении для последующего использования (используя NLog).