2011-01-17 11 views
5

एनएचबर्ननेट का आईएसशन दो ओवरलोड के साथ एक विधि Persist() का खुलासा करता है। मुझे कहीं भी इस विधि पर दस्तावेज़ीकरण नहीं मिल रहा है। एनएचबीर्नेट संदर्भ सामग्री में http://nhibernate.info/doc/nh/en/index.html पर इसका भी उल्लेख नहीं किया गया है।मुझे NHibernate ISession.Persist() के लिए दस्तावेज़ कहां मिल सकता है?

क्या यह विधि बहिष्कृत है, या यह होगी? इसका उपयोग कब किया जाना चाहिए? यह SaveOrUpdate() से तुलना कैसे करता है?

किसी भी पॉइंटर्स की बहुत सराहना की जाएगी।

उत्तर

4

इस सूत्र http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273 पर अंतिम टिप्पणी बहुत अच्छी तरह से यह निर्दिष्ट करता है:

जारी रहती है() अच्छी तरह से परिभाषित किया गया है। यह एक क्षणिक उदाहरण लगातार बनाता है। हालांकि, यह गारंटी नहीं देता है कि पहचानकर्ता मान को तुरंत उदाहरण के लिए आवंटित किया जाएगा, असाइनमेंट फ़्लश समय पर हो सकता है। कल्पना यह नहीं कहती है कि, समस्या है जो मेरे पास है()।

जारी रहती है() भी गारंटी है कि उसे एक सम्मिलित बयान पर अमल नहीं होगा अगर यह लेनदेन सीमाओं के बाहर कहा जाता है। यह विस्तारित सत्र/दृढ़ता संदर्भ के साथ लंबे समय से चलने वाली बातचीत में उपयोगी है।

एक विधि जैसे persist() की आवश्यकता है।

बचाने() एक ही गारंटी नहीं है, यह एक पहचानकर्ता देता है, और पहचानकर्ता प्राप्त करने के लिए निष्पादित करने के लिए करता है, तो एक सम्मिलित है (उदाहरण के लिए "पहचान" जनरेटर, नहीं "अनुक्रम"), इस सम्मिलित होता है तत्काल, कोई फर्क नहीं पड़ता कि आप लेनदेन के अंदर या बाहर हैं। यह विस्तारित सत्र/दृढ़ता संदर्भ के साथ लंबे समय से चलने वाले बातचीत में अच्छा नहीं है।

यह भी लगता है कि मैं अन्य स्रोतों से क्या इकट्ठा कर सकता हूं कि कॉल के समय कैस्केड = "पर्सिस्ट" रखने वाली इकाई फ्लश पर नहीं होगी। यह भी बहुत उपयोगी हो सकता है।

+1

यह एक उत्कृष्ट खोज है। धन्यवाद। मुझे लगता है कि मुझे वास्तव में Persist() के बजाय SaveOrUpdate() का उपयोग करना चाहिए .. लेकिन स्थिर() वास्तव में कुछ परिदृश्यों में उपयोगी हो सकता है। अब अगर मैं केवल यह पता लगा सकता हूं कि कैसे कैस्केड = FluentNHibernate के साथ बने रहें .... आपकी मदद के लिए धन्यवाद! –

संबंधित मुद्दे