Я работаю над своим первым настоящим веб-приложением asp.net, и я в некотором роде озадачен лучшим местом и методом, позволяющим отлавливать и обрабатывать нарушения ограничений базы данных. Предположим, у меня есть уникальное ограничение на столбец, и пользователь вводит что-то, что нарушает это уникальное ограничение. Должен ли я перехватить его на бизнес-уровне, вызвав базу данных, чтобы проверить, существует ли значение для этого столбца, или я позволю ему пройти весь путь до базы данных, и он выдаст исключение и обработает это в моем приложении?
Мне не нравится последний ответ, потому что имеет смысл обрабатывать столько, сколько вы можете на бизнес-уровне, прежде чем он достигнет базы данных. Но это также несколько проблематично, так как мое приложение управляется процедурами, которые реализуют базовые операции CRUD во всех таблицах. Поэтому для того, чтобы я обеспечил уникальность на бизнес-уровне, мне нужно создать процедуру для каждого возможного ограничения, чтобы я мог выполнить поиск перед обновлением или вставкой. Это просто кажется утомительным ... и я дублирую бизнес-правила, так как они существуют как в базе данных, так и на бизнес-уровне, поэтому, если что-то меняется, мне нужно не только изменить базу данных, но я должен изменить процедуру и код приложения.
Так есть ли правильный или хороший способ обеспечить соблюдение этих ограничений базы данных в коде приложения или я должен искать способ отловить исключения, выдаваемые базой данных, и представить их в удобном для пользователя виде?