Во-первых, вы, вероятно, не должны показывать свои сущности непосредственно в пользовательском интерфейсе, поэтому я рекомендую вам создать новые модели и написать валидаторы специально для них.
Предполагая, что это правильно подключено, этот подход означает, что валидаторы автоматически запускаются во время HTTP POST в приложении MVC, а состояние модели автоматически обновляется со списком ошибок.
Я используюэтот подход широко, хотя в приложениях MVC, которые вызывают внутренний API.
В большинстве моих случаев клиент MVC проверяет модель и, если он проходит проверки, затем вызывает API или сервисный уровень с моделью DTO / service / entity, которая сопоставляется с Automapper.
Проверка MVC обычно невелика и проверяет наличие обязательных полей, длин и т. Д.
API выполняет проверку еще раз, но делает это на объекте и в этот раз идет гораздо глубже, так как проверяет наличие дубликатов., недействительное состояние объекта и т. д.
Последний комментарий, который я хотел бы добавить.Я бы не бросил исключения на ошибки валидации.Пользовательский интерфейс должен использовать ModelState, а сервисный уровень возвращает результат, который клиент знает, как слить обратно в ModelState, поэтому любой сценарий приводит к тому, что пользователи получают хороший список ошибок, с которыми им приходится иметь дело.
Надеюсь, это поможет!