2013-01-11 10 views
5

कहो वहाँ है एक class A जब एक का एक उदाहरण के लिए बनाएं तरह कुछ बुला अब इससत्यापित का उपयोग कैसे करें नेस्ट वस्तुओं स्वचालित रूप से

class A 
{ 
    [NotNull] 
    string Alpha; 
    B bObject; 
} 

class B 
{ 
    [NotNull] 
    string Beta; 
} 

A a = new A(); 
a.Alpha = "test" 
a.bObject = new b(); 
a.bObject.Beta = null; 

तरह class B के लिए एक संदर्भ है, कोड कॉल NHibernate.Validator.Engine.ValidatorEngine.Validate

लेकिन, यह केवल A (Alpha) के सदस्यों को मान्य करता है। जब NHibernate ऑब्जेक्ट को जारी रखने का प्रयास करता है, तो यह विफल रहता है क्योंकि डेटाबेस Object के लिए अनुमति नहीं देता है।

क्या इसे कॉन्फ़िगर करना संभव है ताकि A मान्य हो B के गुणों को भी मान्य कर सके?

* संपादित करें:

तरह से मैं यह चारों ओर हो रही है वर्तमान में मैन्युअल रूप से कहीं भी Validate(A.bObject) कॉल करने के लिए भंडार बनाने/अद्यतन A, पूर्व की जरूरत है: A

public void Update(A entity) 
{ 
    //I want to avoid having to do this in every class repository that has a 
    //reference to B 
    var errorsList = valEngine.Validate(entity.bObject); 

    if (errorsList .Length == 0) 
    { 
     status = base.Create(entity); 
     //Simply calls the appropriate NH function to persist the object 
    } 
} 
के लिए भंडार में

मैं उस पंक्ति को दोहराने से कैसे बच सकता हूं जो B को हर बार मान्य करता है?

उत्तर

0

documentation से, आप के लिए मान्य विशेषता का उपयोग कर सकते हैं:

जुड़े वस्तु पर पुनरावर्ती सत्यापन प्रदर्शन करते हैं। यदि वस्तु संग्रह या सरणी है, तो तत्वों को रिकर्सिव रूप से मान्य किया जाता है। यदि ऑब्जेक्ट एक मानचित्र है, तो मान तत्वों को रिकर्सिव रूप से मान्य किया जाता है।

क्या आपने अभी तक कोशिश की है?

class A 
{ 
    [NotNull] 
    string Alpha; 

    [Valid] 
    B bObject; 
} 
संबंधित मुद्दे