Проверка с атрибутами не лучшее решение на мой взгляд. Во-первых, вы должны ссылаться на инфраструктуру в доменной модели. Во-вторых, у вас нет шансов добавить проверку в скомпилированные классы. Наконец, вы не можете проверить сложную логику с атрибутами, и вам нужно сделать метод Validate для объекта, и это просто кажется неудобным.
На мой взгляд, валидация должна быть разделена на разные объекты. Например, IValidator, где вы можете определить валидацию как правила. Использование фреймворка, такого как xVal , помогает выполнить проверку на уровне представления с помощью JavaScript.
Возможно, вы захотите поискать xVal и FluentValidation для .NET . NHibernate Validator 1.2 alpha также имеет свободный синтаксис и интегрирован с xVal (не уверен насчет alpha, но 1.0 должен быть).
Блок проверки предприятия также имеет несколько отрицательных сторон. Свойства моей сущности в итоге имели 3 строки атрибутов и ухудшили читаемость. Попытка добавить проверку с помощью операторов И или ИЛИ также довольно болезненна.