Пользовательское исключение в LINQ to SQL - PullRequest
3 голосов
/ 23 июня 2011

Я хочу вызвать пользовательское исключение при сбое вставки, что нарушает отношения PK / FK.Теперь LINQ TO SQL генерирует SQLException, я хочу вызвать более конкретное исключение, например CategoryException.

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Когда вы ловите SQLException, вы можете проверить его свойство Number или перейти к его свойству Errors и проверить, содержит ли оно SqlError с номером 547 - это должно быть нарушением ограничений. Если вам нужны подробности о том, какое ограничение было нарушено и по какой таблице вы должны действительно проанализировать сообщение как упомянутое @tyrongower. Шаблон для сообщения:

The %ls statement conflicted with the %ls constraint "%.*ls". The conflict occurred in database "%.*ls", table "%.*ls"%ls%.*ls%ls.

Edit:

В зависимости от типа приложения, которое вы разрабатываете, вы должны знать о локализации. Сервер SQL может локализовать свои сообщения об ошибках, поэтому, если вы развернете приложение на сервере, используя другой языковой стандарт, ваш анализ сообщений об исключении не будет работать.

2 голосов
/ 26 июня 2011

Вам может понадобиться перехватить SQLException и проанализировать тело сообщения, а затем выдать желаемое исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...