मेरे पास दो संबंधित व्यावसायिक ऑब्जेक्ट्स हैं - ए और बी एसोसिएशन (ए-> बी) बी-डी के साथ कई-से-एक है ए में विदेशी कुंजी (इसलिए ए में डीबी में एबी_आईडी है)।NHibernate - पूरे ऑब्जेक्ट को आलसी लोड किए बिना किसी संबंधित ऑब्जेक्ट की आईडी तक पहुंचें
मैं आलसी = सत्य का उपयोग कर रहा हूं और मेरी अधिकांश समस्याओं का समाधान कर रहा हूं, हालांकि ए के टूस्ट्रिंग में मैं एबीआईआईडी भी प्रिंट करना चाहता हूं, जो मुझे डीबी के आगे और यात्रा के बिना होना चाहिए। लेकिन एबी तक पहुंच प्रॉक्सी को सक्रिय करती है, और चूंकि यह एक खुले सत्र के संदर्भ में नहीं है, अपवाद फेंकता है।
एक आसान लेकिन बदसूरत समाधान एबी_आईडी संपत्ति होगी। लेकिन वह सामान है जो हम पहले स्थान से बचने की कोशिश कर रहे थे। ऐसा करने के लिए कोई "जैविक" तरीका? :) धन्यवाद!
अपडेट: बस कैशिंग और सत्र के बारे में पढ़ें। बनाम सत्र। लोड करें। इससे पहले कि मैं केवल नया हूं कि कोई अपवाद फेंकता है यदि ऑब्जेक्ट मौजूद नहीं है (सत्र। लोड), और दूसरा एक शून्य ऑब्जेक्ट (सत्र.गेट) देता है। here कैशिंग के बारे में पढ़ने के बाद, यह स्पष्ट है कि सत्र। लोड ऑब्जेक्ट को प्रॉक्सी देता है, और केवल आलसी रूप से इसे प्राप्त करता है जब आईडी के अलावा किसी अन्य संपत्ति का उपयोग किया जाता है, जो कि एसोसिएशन से मुझे बहुत कुछ चाहिए! अब के लिए मैंने अलग ऑब्जेक्ट आईडी जोड़ दी हैं (एबीआई को जोड़ने के बजाय इसे एबी_आईडी के रूप में एक्सेस किया जा सकता है)
आप ऐसा क्यों करना चाहते हैं? – Paco
जैसा कि मैंने कहा था, सिर्फ लॉग प्रिंटिंग आदि के लिए, ए के ToString() में। मुझे बस आईडी से अन्य क्षेत्रों की आवश्यकता नहीं है। –