Обычно мне приходится вставлять некоторые данные в БД, и он не может быть вставлен, потому что в таблице есть ограничения, препятствующие этому. В приложении, которое я разрабатываю, некоторые бизнес-правила (например, "нет двух лиц с одинаковым типом и номером" или "XXXX-продукт уже зарегистрирован" ) выполняются с помощью UNIQUE или составных клавиш и других механизмов. Хотя я знаю, что СУБД выдает сообщение об ошибке (например, ORA-6346 или), я не знаю, как поймать эти ошибки в .net 4.0 и перевести их на ошибку, которая может иметь смысл для бизнес-уровня.
В качестве примера: я видел механизм вставки, который запрашивает БД, если регистр уже существует, а затем он вставляет данные, если это не так. Я хочу сделать это только с помощью запроса и поймать ошибку ограничения ограничений базы данных, потому что первый способ кажется мне очень неэффективным (DB может предупредить вас о дублировании с ошибкой).
Как я могу реализовать что-то подобное?
Примечание. Я думаю, что можно получить исключение из базы данных и использовать его код ORA-xxxx, чтобы попытаться выяснить, что произошло. Я не помню с точностью, если сообщение об ошибке показывает, какое ограничение (имя...) было нарушено, но код бизнес-уровня может содержать константы с именами ограничений и, из них, знать, что произошло.