2009-04-28 4 views
2

Ist es möglich, eine Validierungsmethode (für die Validierung von Businbess-Regeln) zu definieren, die von NHibernate.Validator verwendet wird? Ich meine etwas, das in EntLib existiert:Validierung von Geschäftsregeln in NHibernate Validator

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

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

Antwort

3

Ja, es kann getan werden - aber Sie werden einen Weg fehlt mehr Informationen zu übermitteln, auf die Regeln wurden im Fall von Validierungsfehlern verletzt.

NHibernate Validator bietet meines Wissens nur die Möglichkeit, eine Textnachricht, den Namen der Klasse und - im Falle von Eigenschaftenvalidierungsattributen - den Namen der verletzten Eigenschaft anzugeben.

Wenn Ihr Attribut HasSelfValidationAttribute implementieren IRuleArgs zeigt auf eine IValidator (oder IInitializableValidator), hat es keine Möglichkeit, etwas anderes zu kommunizieren zurück, aber eine einfache und den Namen der Klasse, die wahrscheinlich zu wenig Informationen wäre, wenn Ihre Nachfrage um "echte Geschäftsregeln" zu validieren.

NHibernate Validator eignet sich hervorragend für einfache Validierungen, die auf die Eigenschaften einer Klasse ausgerichtet sind, aber es kommt zu kurz, wenn Sie komplexere Validierungen durchführen müssen.

0

Werfen Sie einen Blick auf The RulesEngine Project. Ihr Business-Objekt muss nicht mit Attributen versehen sein oder Schnittstellen haben ...