Как обработать исключение доступа к данным - PullRequest
1 голос
/ 18 сентября 2011

У меня 3-х слойная архитектура. Когда пользователь нажимает кнопку отправки. Все значение устанавливается на бизнес-уровне. Затем на бизнес-уровне вызывается функция уровня данных для вставки данных в базу данных. У меня есть уникальное поле в базе данных. Когда я присваиваю этому полю не уникальное значение, оно вызывает исключение в DataLayer.

Мне нужно знать, как правильно подходить к этим случаям. Если мы проверим его на бизнес-уровне, это неуникальное значение не сможет перейти на уровень DataAccess или мы должны обработать исключение из уровня Dataaccess. Пожалуйста, дайте мне знать, как обрабатывать подобные исключения и показывать деловое сообщение пользователю.

Мне нравятся разные подходы Ошибка №

Ответы [ 3 ]

0 голосов
/ 18 сентября 2011

ИМХО, вы всегда должны ретранслировать эти исключения. Они там именно по этой причине. Если бы вам пришлось самостоятельно проверять уникальность поля, в чем смысл уникального атрибута? Для второй части вашего вопроса. Я думаю, что пользователь не должен нести ответственность за предоставление каких-либо уникальных данных. Следовательно, пользователю не должна предоставляться информация о том, что ваш уровень доступа к данным должен был разрешить любой конфликт уникальности. Честно говоря, я не могу придумать ни одной ситуации, требующей от пользователя предоставления уникального значения для всей базы данных, которое вы не могли бы создать за кулисами на уровне доступа к данным. Что касается того, как обрабатывать исключение, я думаю, что это зависит от характера данных. Я бы отбросил конфликтующий новый ввод или объединил бы данные, если бы мог.

Можете ли вы сказать что-нибудь еще о системе?

0 голосов
/ 18 сентября 2011

Если в таблицу необходимо вставить уникальное значение, то будет хорошо, если вы проверите уникальность перед вставкой в ​​базу данных.если это веб-приложение.Вы можете использовать комбинацию JQuery , AJAX , чтобы сначала проверить уникальность.Здесь может помочь веб-служба или простой веб-метод в вашем файле .aspx.cs будет вызываться через Jquery с использованием ajax .Если ввод не является уникальным, тогда выведите сообщение, удобное для пользователя

0 голосов
/ 18 сентября 2011
  • Ваш уровень данных должен перехватить исключение sql и повторно выбросить его пользовательское исключение для дублирующейся сущности
  • Ваш бизнес-уровень должен перехватить это исключение и затем отобразить дружественное сообщение об ошибке пользователю, что запись является дубликатом

Редактировать: Чтобы определить, что исключение sql предназначено для дублирующейся записи, вы можете проверить Entity Framework: Как правильно обрабатывать исключения, возникающие из-за ограничений SQL и Уникальный ключНарушение в SQL Server - безопасно ли предполагать ошибку 2627?

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