2010-05-28 14 views
10

क्या निबर्ननेट प्रॉक्सी परिवर्तन ट्रैकिंग को प्रभावी बनाने के लिए कोई स्मार्ट काम करता है? या क्या यह केवल समर्थन करता है कि एंटीटी फ्रेमवर्क स्नैपशॉट आधारित परिवर्तन ट्रैकिंग कहता है?NHibernate परिवर्तन ट्रैकिंग को कैसे कार्यान्वित करता है?

+0

क्या आप ऑडिट लॉगिंग के बारे में बात कर रहे हैं, जहां परिवर्तन दर्ज किए जाते हैं, या संस्थाओं के पिछले संस्करणों में वापस जाने की क्षमता के साथ पूर्ण परिवर्तन प्रबंधन? – DanK

+0

यदि इकाई में कई गुण हैं ORM को केवल बदले गए गुणों के साथ डेटाबेस में अद्यतन कथन जारी करना चाहिए। LINQ से SQL में, यह जानता है कि गुण बदल गए हैं या नहीं, INotifyPorpertyChanging/Changed इंटरफ़ेस के माध्यम से (हालांकि यह एक आवश्यकता नहीं है, इस मामले में यह स्नैपशॉट आधारित परिवर्तन ट्रैकिंग पर वापस आ जाता है, यह हर गुणों की तुलना करता है कि कौन से प्रोपरीज बदल गए हैं)। – Alice

उत्तर

12

यह स्नैपशॉट-आधारित है।

एक इकाई लोड करते समय, इसकी स्थिति सत्र में एक वस्तु के रूप में संग्रहीत होती है []।

फ़्लशिंग करते समय, वर्तमान स्थिति को किसी ऑब्जेक्ट में परिवर्तित किया जाता है [] और मूल स्थिति की तुलना में यह निर्धारित करने के लिए कि कौन सी गुण गंदे हैं।

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

9

NHibernate और EntityFramework ट्रैक बहुत अलग तरीकों से बदलते हैं। इकाई फ्रेमवर्क इकाई में परिवर्तन को ट्रैक करता है। सत्र में NHibernate ट्रैक बदलता है।

इकाई में ट्रैकिंग परिवर्तनों में अधिक मेमोरी की आवश्यकता होती है (क्योंकि आप पहले मानों के साथ-साथ बाद के मूल्यों को संग्रहीत कर रहे हैं)। ऑब्जेक्ट्स ऑब्जेक्ट कॉन्टेक्स्ट से डिस्कनेक्ट करने के बाद भी परिवर्तन ट्रैकिंग को बनाए रख सकते हैं।

सत्र में ट्रैकिंग परिवर्तन समग्र रूप से अधिक कुशल है, लेकिन यदि आप सत्र से किसी इकाई को डिस्कनेक्ट करते हैं, तो आप परिवर्तन ट्रैकिंग खो देते हैं।

+0

क्या यह कथन सही है? जहां तक ​​मुझे पता है, ईएफ इकाई परिवर्तनों को ट्रैक करने के लिए एक तथाकथित परिवर्तन ट्रैकर का उपयोग करता है। इकाई में कोई परिवर्तन ट्रैकिंग बुनियादी ढांचा नहीं है। – Andreas

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