Я нахожусь на пути создания MVC-приложения, и мне очень нравится поддержка Data Annotations в MVC. Встроенная поддержка достаточно хороша для обеспечения простой проверки правильности проверки. Интересно, как реализовать проверку уникального поля с помощью пользовательской аннотации данных? Например, у меня есть модель представления, которая требует, чтобы пользователь зарегистрировал новое имя для входа, есть ли способ проверить (используя Model.IsValid), существует ли имя перед вызовом db submit?Как обеспечить проверку уникального поля в MVC
ответ
Вы можете написать свой собственный атрибут validator, чтобы проверить базу данных, я думаю, или вы можете загрузить все данные и проверить их.
Я был бы более склонен просто пытаться писать в базу данных и иметь уникальное ограничение в таблице. Если вы вернете ошибку, указывающую на наличие дублированной ошибки вставки, вы просто показываете это пользователю.
Я бы не стал читать дальше и проверять себя.
EDIT
Я думаю, вы могли бы также сделать проверку в коде, который делает вставки. Вы можете прочитать, и если ни один не найден, тогда вставьте.
Если вы нашли дубликат, вы можете добавить к правилам проверки достоверности моделей и вернуть их, чтобы ошибка появилась в сводке проверки на странице.
Создайте свой собственный атрибут, который наследуется от ValidationAttribute (база для всех атрибутов проверки в пространстве имен DataAnnotations). Переопределите метод IsValid с проверкой уникальности идентификатора пользователя.
Извините, я не прояснил ситуацию. Я знаю, что могу выполнять специальный атрибут проверки, но для выполнения проверки уникальности мне нужно передать список объектов или контекст/репозиторий db в логику проверки, и я не уверен, насколько это уместно. – xandy