Можно ли определить сообщение об ошибке для ограничения UNIQUE KEY в SQL SERVER, когда оно вызывается EF 4.0? - PullRequest
1 голос
/ 09 декабря 2011

Мне не нужно выполнять запрос дублирования, например, проверка какого-либо столбца уникальна или нет, потому что эта операция всегда выполняется с ограничением SQL Server. Однако сообщение об ошибке по умолчанию от SQL Server не является четко определенным для конечного пользователя.

Есть ли у вас идеи сделать сообщение об ошибке изменения / переопределения более удобным для пользователя?

PS. Я выполняю все запросы через Entity Framework 4.0.

1 Ответ

3 голосов
/ 09 декабря 2011

Единственный способ, которым я знаю, это поймать SqlException и затем проверить свойство Number. Это свойство является ярлыком для первого Error в свойстве Errors, и если вы беспокоитесь о возможности возникновения нескольких ошибок, вы можете использовать его вместо этого.

Как только вы узнаете номер ошибки sql, вы можете предоставить более удобное сообщение. К сожалению, я не знаю способа получить хороший список распространенных номеров ошибок сервера sql, кроме выполнения select * from sys.messages, но поиск по ним может быть немного сложным.

Я заботился только о нескольких конкретных номерах ошибок и создал условия ошибок вручную, чтобы определить номера:

 547 foreign key conflict
2601 unique index violation
2627 primary key violation

На любой другой номер ошибки я просто предоставляю общее сообщение, указывающее, что была проблема с базой данных. Во всех случаях я регистрирую информацию об исключении для последующего использования (используя NLog).

...