Подход на основе метаданных работает хорошо, но подход, который я использовал, заключается в том, чтобы иметь отдельный набор объектов ViewModel и использовать инструмент, подобный AutoMapper , для сопоставления объектов EF с объектами ViewModel. (В более сложных реализациях между объектами EF и объектами ViewModel существует отдельная модель предметной области.)
Если вы реализуете шаблон репозитория для извлечения объектов ViewModel, это также значительно упростит тестирование ваших контроллеров.
Затем вы можете приписать свои объекты ViewModel своему сердцу, не беспокоясь о переопределении кода вашими атрибутами. Также можно использовать другой метод проверки (например, FluentValidation ), так как он может работать гладко с xVal.