Я использовал как в производственных проектах, и, если у вас есть время, чтобы переключиться, я бы настоятельно рекомендовал NHibernate.Validator по нескольким причинам:
- NHibernate.Validators имеетболее богатый набор атрибутов валидации (например, несколько упомянутых выше)
- При правильной реализации валидации NHibernate.Validators легче проводить модульное тестирование.
Нет.1 не был огромным для меня, и, возможно, не для вас, так как набор атрибутов в DataAnnotations довольно полный (и вы можете прибегнуть к RegEx, если это необходимо), но нет.2 был для меня большим делом, потому что я хотел иметь возможность включать проверку данных как часть моих модульных тестов модели предметной области, а не тестировать их только через UI / Web-тестирование через WatiN или Selenium.Использование валидаторов также позволило мне смешивать валидацию модели доменной модели (свойство X ИЛИ Y должно иметь значение, но оба не могут иметь значение null) без необходимости переходить в другое место для этого.
Для получения некоторых основных рекомендаций по использованиюNHibernate Validators, ознакомьтесь с этой статьей: http://nhibernate.info/blog/2009/04/02/nhibernate-validator-and-asp-net-mvc.html, и я также рекомендовал бы получить исходный код для архитектуры S # arp, замечательной среды Билли МакКафферти для создания приложений ASP.NET MVC в стиле DDD.В частности, ознакомьтесь с его реализацией Validator и Validator ModelBinder, которые вам необходимо создать для переноса ошибок валидации NHibernate в MVC ModelErrors.Загрузите исходный код S # arpArchitecture здесь: http://github.com/codai/Sharp-Architecture.
Суть заключается в следующем: использование NHibernate.Validators является более расширяемым и тестируемым вариантом, но для его правильного использования потребуется некоторое время.DataAnnotations встроены в среду и с ней легче работать, в этом нет сомнений.
Надеюсь, это поможет.