2009-04-28 102 views
2

是否可以定義NHibernate.Validator將使用的驗證方法(用於businbess規則驗證)? 我意味着什麼,存在於EntLib:NHibernate驗證器中的業務規則驗證

[HasSelfValidation()] 
public class SomeClass 
{ 
    //... 

    [SelfValidation()] 
    public virtual void DoValidate(ValidationResults results) 
    { 
     //... 
    } 
} 

回答

3

是的,這是可以做到 - 但你會缺少溝通方式上規則在驗證錯誤的情況下,違反了更多的信息。我知道,NHibernate驗證器只提供了指定文本消息,類名稱的能力,以及 - 在屬性級驗證屬性的情況下 - 違反屬性的名稱。

如果你的屬性HasSelfValidationAttribute實施IRuleArgs指向一個IValidator(或IInitializableValidator),它沒有辦法傳送回任何東西,但一個簡單的和類,這很可能是信息太少,如果你的需求是名驗證「真實的商業規則」。

NHibernate驗證器非常適合作爲類的屬性的簡單驗證,但是當您需要執行更復雜的驗證時,NHibernate驗證器會很短。