2009-06-08 8 views
6

डिस्कनेक्ट किए गए परिदृश्यों के संबंध में NHibernate (2.0.1 GA) के नवीनतम संस्करण के साथ आपके अनुभव क्या हैं?डिस्कनेक्ट किए गए परिदृश्यों में NHibernate

एक डिस्कनेक्टेड परिदृश्य है जहां मैं एनएचबीर्नेट से कुछ ऑब्जेक्ट ग्राफ़ लाता हूं, सत्र (और डेटाबेस कनेक्शन) से डिस्कनेक्ट करता हूं, ऑब्जेक्ट ग्राफ़ में कुछ बदलाव करता हूं (संग्रह में हटाना, इकाइयों को जोड़ना, इकाइयों को अद्यतन करना) और फिर पुनः कनेक्ट करना और सहेजना ....

+0

मैं कलाकृतियां हूँ, बहुत –

+0

आप शायद अधिक विशिष्ट होना चाहिए:

यहाँ एक लेख जो आपको और अधिक जानकारी देता है। किस तरह के अनुभव, किस तरह का "डिस्कनेक्ट परिदृश्य"? –

+0

क्यों? मुझे लगता है कि मैंने पहले से ही एक परिदृश्य पोस्ट किया है, हालांकि बहुत विशिष्ट नहीं है, लेकिन सामान्य रूप से। जब मैं एक बहुत ही विशिष्ट परिदृश्य से पूछता हूं तो प्रतिक्रियाओं की मात्रा सामान्य होने के कारण कम हो सकती है। –

उत्तर

4

हमने क्लाइंट-सर्वर आर्किटेक्चर में इसे आजमाया। अब हम डीटीओ (डेटा ट्रांसफर ऑब्जेक्ट्स) में जा रहे हैं। इसका मतलब है, अलग-अलग इकाइयां सीधे क्लाइंट को नहीं भेजी जाती हैं, लेकिन विशेष वस्तुएं।

इस दिशा में जाने का मुख्य कारण NHibernate नहीं है, यह वास्तव में क्लाइंट को संस्थाओं को भेजने के लिए आवश्यक क्रमिकरण है। जब आप सत्र से जुड़े होते हैं, तो आप आलसी लोडिंग (और आप करेंगे!) का उपयोग कर सकते हैं, आपको डेटाबेस से सभी संदर्भों को क्रमबद्ध करने की आवश्यकता है।

हमारे पास संदर्भों के बजाय बहुत सारे गुड्स थे और मैप किए गए बहुत से गुण हैं लेकिन क्रमबद्ध नहीं हैं ... और यह दर्द हो गया। इसलिए उन सामानों की प्रतिलिपि बनाना बहुत आसान है, जिन्हें आप वास्तव में अपनी संरचना में क्रमबद्ध करना चाहते हैं।

इसके अलावा - काम करने से अलग काम अच्छी तरह से काम कर सकता है।

  • आलसी लोडिंग से सावधान रहें, जिससे पृथक उदाहरण पर गैर लोड ऑब्जेक्ट्स तक पहुंचने पर अपवादों को फेंक दिया जाएगा।
  • समेकन के साथ सावधान रहें, जहां संभावनाएं अलग हो गईं, जबकि इकाइयों को बदल दिया गया था।
  • सावधान रहें यदि आपको किसी प्रकार की सुरक्षा की आवश्यकता है या भले ही आप चाहते हैं कि आपका सर्वर कुछ डेटा परिवर्तन करे। अलग-अलग वस्तुएं किसी भी राज्य में संभावित रूप से वापस आ सकती हैं।
+0

यदि आप एलएलबीएलजीनप्रो को उदाहरण के लिए देखते हैं: कोड उत्पन्न करने से पहले, आप तय कर सकते हैं कि आप किस टेम्पलेट का उपयोग करेंगे। एक "आत्म-सेवा" नामक सक्रिय रिकॉर्ड पैटर्न का उपयोग करेगा और दूसरा एडाप्टर (जैसे ADO.NET डेटा एडाप्टर) का उपयोग करेगा। डिस्कनेक्ट किए गए परिदृश्य (रिमोटिंग या वेब सर्विसेज) होने पर अंतिम व्यक्ति आसान होता है। –

+2

@ पैट्रिक: मुझे यह मानना ​​है कि मेरे पास कोई सुराग नहीं है जिसके बारे में आप बात कर रहे हैं। –

+0

स्वयं सर्विसिंग टेम्पलेट के साथ LLBLGenPro एक वर्ग (या अधिक) बनाएगा जहां आप गुण प्राप्त कर सकते हैं और गुण सेट कर सकते हैं (POCO-style) और फिर "सहेजें" जैसी विधि को कॉल करें। यह ऑब्जेक्ट राज्य प्रबंधन और ऑब्जेक्ट-पेड़ लोडिंग और एसक्यूएल सृजन के संबंध में स्वयं-सेवा है। एडाप्टर शैली केवल हल्के वजन वाले वर्ग को केवल गुणों के साथ उत्पन्न करती है और धारावाहिक है; यह ऑब्जेक्ट किसी अन्य ऑब्जेक्ट को पारित किया जा सकता है जो सभी राज्य प्रबंधन और एसक्यूएल निर्माण, आदि कर रहा है ... –

4

आप सत्र तरीकों SaveOrUpdateCopy और मर्ज पर एक बार देख ले सकते हैं। NHibernate feature: SaveOrUpdateCopy & Merge

+0

यूआरएल बदल गया प्रतीत होता है। ऐसा लगता है कि अब http://www.codinginstinct.com/2009/11/nhibernate-feature-saveorupdatecopy.html –

+0

धन्यवाद, मैंने यूआरएल तय कर दिया है। –

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