2009-07-20 12 views
11

अस्वीकरण: मैं एक NHibernate noobie इसलिए उम्मीद है कि इस सवाल का समझ में आता है मैं दो वर्गों कुछ की तरह जो कई-से-अनेक संबंध है ...NHibernate कास्केड = बचाने अद्यतन "

public class Entity1 
{ 
    public virtual Guid EntityId { get; set; } 
    public virtual IList<Entity2> Entity2List; 
} 

Public class Entity2 
{ 
    public virtual Guid EntityId { get; set; } 
    public virtual IList<Entity1> Entity1List; 
} 

मैं है। क्लास मैपिंग्स में एक बैग के साथ कई से अधिक रिश्तों को जोड़ा, एक एसोसिएशन टेबल को परिभाषित किया, लेकिन मुझे पता नहीं है कि किस कैस्केड विकल्प का उपयोग करना है। मैं एक नया एंटिटी 1 इंस्टेंस बनाने में सक्षम होना चाहता हूं, इसकी सूची में एक नया एंटिटी 2 उदाहरण जोड़ें , सहेजें को कॉल करें, और दोनों को डेटाबेस (और इसके विपरीत) में डाला जाए। किसी इकाई को हटाने पर इसे किसी भी संगठन को बाल संस्थाओं को हटा देना चाहिए, न कि बच्चे की इकाई। क्या मुझे कैस्केड = "सेव-अपडेट" का उपयोग करना चाहिए?

उत्तर

25

हां। ऐसा लगता है कि इस मामले में 'सेव-अपडेट' जैसा आप चाहते हैं।

मुझे प्रलेखन में प्रत्येक कैस्केड विकल्प का एक महान स्पष्टीकरण कभी नहीं मिला, लेकिन इस संदर्भ में इस blog post का उपयोग Ayende द्वारा किया गया है।

  • कोई भी - किसी भी cascades नहीं करते हैं, उन उन्हें खुद से हैंडल करते हैं।
  • सेव-अपडेट - जब ऑब्जेक्ट सहेजा/अपडेट किया जाता है, तो एसोसिएशन की जांच करें और किसी भी ऑब्जेक्ट को सहेजें/अपडेट करें (जिसमें कई परिदृश्यों में एसोसिएशन को सहेजें/अपडेट करें)।
  • हटाएं - जब ऑब्जेक्ट हटा दिया जाता है, तो एसोसिएशन में सभी ऑब्जेक्ट हटाएं।
  • हटाएं-अनाथ - जब ऑब्जेक्ट हटा दिया जाता है, तो एसोसिएशन में सभी ऑब्जेक्ट हटा दें। इसके अतिरिक्त, जब किसी ऑब्जेक्ट को एसोसिएशन से हटा दिया जाता है और किसी अन्य ऑब्जेक्ट (अनाथ) से जुड़ा नहीं होता है, तो इसे भी हटा दें।
  • सभी - जब कोई ऑब्जेक्ट सहेज/अपडेट/हटाता है, तो संघों की जांच करें और पाए गए सभी ऑब्जेक्ट्स को सहेजें/अपडेट/हटाएं।
  • ऑल-डिलीट-अनाथ - जब कोई ऑब्जेक्ट सहेज/अपडेट/डिलीट होता है, तो एसोसिएशन की जांच करें और पाए गए सभी ऑब्जेक्ट्स को सेव/अपडेट/हटाएं। इसके अतिरिक्त, जब किसी ऑब्जेक्ट को एसोसिएशन से हटा दिया जाता है और किसी अन्य ऑब्जेक्ट (अनाथ) से संबद्ध नहीं होता है, तो उसे भी हटा दें।
संबंधित मुद्दे