2010-07-07 45 views
3

在我的APS.NET MVC項目中,我正在使用DataAnnotations進行驗證。NHibernate.Validator vs DataAnnotations

我從L2S到NHibernate的 ORM移動和實際上發現NHibernate的都有自己驗證器(NHibernate.Validator

是否有意義移動到NHibernate.Validator呢?

例如DataAnnotations有[必需]屬性和NHibernate.Validator [NotEmpty,NOTNULL,NotNullNotEmpty],這讓我覺得用什麼。

回答

3

我用兩個生產項目,如果你有時間作出這樣的轉變,我會強烈reccomend NHibernate.Validator了幾個原因:

  1. NHibernate.Validators有 更豐富驗證設置屬性 (例如,少數您 上面提到)
  2. 如果實施正確 ,NHibernate.Validators 驗證更容易進行單元測試。

第1號對我來說並不是很大,因爲DataAnnotations中的一組屬性非常完整(如果需要,您可以回退到RegEx),但是不會。 2對我來說很重要,因爲我希望能夠將數據驗證作爲我的域模型單元測試的一部分,而不是僅通過通過WatiN或Selenium的UI測試進行測試。使用驗證器還允許我混合使用領域模型規則驗證(屬性X或Y必須有一個值,但都不能爲空),而不必去另一個地方這樣做。

關於使用NHibernate驗證器的一些基本指導,請看看這篇文章:http://nhibernate.info/blog/2009/04/02/nhibernate-validator-and-asp-net-mvc.html,我也建議爲Billy McCafferty創建DDD風格的ASP.NET MVC應用程序的偉大框架S#arp Architecture提供源代碼。具體來說,請查看他的Validator實現以及您需要創建的Validator ModelBinder,以將NHibernate驗證錯誤轉換爲MVC ModelErrors。從這裏下載S#arpArchitecture源代碼:http://github.com/codai/Sharp-Architecture

底線是這樣的:使用NHibernate.Validators是一個更具擴展性,可測試的選項,但它需要一些操作才能正確使用它。 DataAnnotations被嵌入到框架中,並且更容易運行,毫無疑問。

希望有所幫助。