#asp.net-mvc-2 #validates-uniqueness-of
#asp.net-mvc-2 #проверяет уникальность
Вопрос:
Мне интересно, какой наилучший метод проверки уникальности значения поля просмотра в наборе объектов: до или после обновления до уровня сохраняемости? Задействованное поле db имеет уникальное ограничение, и его таблица сопоставлена с моделью EF. Я вижу два способа проверки уникального значения в entityset:
- перед сохранением изменений в БД (во время обновления модели или путем оформления модели пользовательскими примечаниями к данным)
- после сохранения изменений в БД (путем обработки в репозитории или контроллере исключения UpdateException, сгенерированного уровнем сохраняемости)
С помощью 1-го метода мне нужно запросить базу данных для проверки уникальности, поэтому для любого обновления представления потребуется как выбор базы данных, так и обновление базы данных.
При использовании 2-го метода дополнительный выбор не требуется, но трудно определить тип ошибки и поле-нарушитель.
Я бы предпочел метод 2, но проблема с определением, не удалась ли вставка / обновление из-за уникального ограничения, вынуждает меня выбрать метод 1.
Или есть другой способ?
Ответ №1:
Предпочтительный и рекомендуемый способ проверки уникального ограничения — из пользовательского интерфейса с помощью пользовательского атрибута DataAnnotation. с помощью этого метода вам придется написать немного кода, но это то, что делают все сайты для проверки ограничения уникальности. asp.net однако mvc 3 предоставляет RemoteAttribute «из коробки» для проверки ограничения уникальности. я бы рекомендовал использовать первый метод, потому что некоторые крошечные вызовы ajax не окажут заметного влияния на производительность при условии, что вы организовали его надлежащим образом.
Комментарии:
1. Спасибо. Я выберу метод 1. Хотя я выполняю проверку как на стороне клиента, так и на стороне сервера, я буду запускать проверку уникальности только на стороне сервера, без использования ajax-вызовов из javascript.