2012-03-05 10 views
6

मेरे पास एक डोमेन ऑब्जेक्ट फ़ू है जिसमें डोमेन ऑब्जेक्ट बार के साथ 1: n संबंध है।एक्स्टबेस: रनटाइम पर आलसी या उत्सुक लोडिंग चुनें

दो प्रमुख उपयोग मामले हैं जहां मुझे सभी foo कुछ मानदंडों से मेल खाने की आवश्यकता है। ए मामले में, मैं प्रत्येक foo से जुड़े सलाखों की परवाह करता हूं, बी के मामले में, मैं नहीं करता हूं। बहुत सारे बार हैं, इसलिए बस बार को लोड करना हमेशा केस ए के प्रदर्शन के लिए अच्छा नहीं है। इसी तरह, सलाखों को बेसब्री से लोड नहीं करने से बी के मामले में एन + 1 हिमस्खलन हो जाएगा। इसलिए न तो @Lazy के रूप में रीयलशन को टैग करना न ही टैगिंग यह सही विकल्प है।

अब, मेरा प्रश्न: क्या क्वेरी समय पर एक्स्टबेस दृढ़ता परत को बताना या आलसी होना संभव है? यदि हां, तो कैसे? यदि नहीं, तो एन + 1 समस्या से बचने के लिए एक्स्टबेस में एक और तरीका है (यानी सभी आवश्यक सलाखों को लोड करें और फिर उम्मीद है कि फ़्यूज़ के माध्यम से कैरिंग काम करता है)?

मेरा आखिरी उपाय, आलसी लोडिंग के साथ फूज़ लोड करना होगा, सलाखों को मैन्युअल रूप से दूसरी क्वेरी में लोड करना होगा, और फिर मैन्युअल रूप से संबंध सेट करना होगा।

कोई सुझाव?

+0

मैंने केस बी को अलग-अलग फ़्यूज़ पर काम करने के लिए इसे फिर से डिजाइन करके हल किया। अच्छा नहीं है, लेकिन बेहतर है, और समय के लिए पर्याप्त तेज़ है। मैं अभी भी यह हासिल करना चाहता हूं। – adhominem

+0

क्या आप अपने स्वयं के प्रश्न का उत्तर दे सकते हैं और फिर हल किए गए चिह्न को चिह्नित कर सकते हैं? यह अभी भी अनुत्तरित [typo3] प्रश्नों की सूची में पॉप अप करता है। – Mateng

+0

एचएम ... मुझे सच में नहीं लगता कि प्रश्न का उत्तर दिया गया है। मुझे इस विशेष समस्या के लिए एक समाधान मिला, लेकिन सामान्य मामला ... – adhominem

उत्तर

2

मैं पिछले कुछ महीनों में एक्स्टबेस के साथ खेल रहा हूं और आंतरिक में प्रवेश कर रहा हूं, और यह अपवाद है: यह असंभव है।

मुझे लगता है कि इस सवाल को बंद कर दिया गया है, हालांकि जिस तरह से मुझे पसंद नहीं है।

दरअसल, इससे भी बदतर: उत्सुक लोडिंग बिल्कुल लागू नहीं होती है, @ टैग टैग जो दस्तावेज के अनुसार एक संबंध के लिए उत्सुक लोडिंग को अनदेखा कर दिया जाता है।

+2

अंतिम भाग के लिए: उत्सुक लोडिंग डिफ़ॉल्ट है, इसलिए कोई '@ उत्सुक' टैग नहीं है। आप इस व्यवहार को '@ आलसी' टैग के साथ आलसी में बदल सकते हैं। – shredding

+1

@shredding जो रनटाइम पर आलसी या उत्सुक व्यवहार के बीच चयन करना संभव नहीं होगा, मुझे डर है। –

+1

हाँ, आप इसे रनटाइम पर सेट नहीं कर सकते हैं। – shredding

0

इसे आलसी छोड़ने और आवश्यकता होने पर इसे एक सरणी में बदलने के बारे में क्या? (foo-> bar-> toArray())

+1

ऐसा करने के क्या फायदे हैं? – nalply

+1

यह अभी भी आलसी होने के बजाय आलसी डेटा (गायब डेटा प्राप्त करने के लिए उपयोग समय पर अतिरिक्त डीबी क्वेरी, प्रत्येक आइटम के लिए एक क्वेरी) होगा (सभी आवश्यक डेटा डीबी से सिंगल, प्रारंभिक क्वेरी द्वारा लोड किया जाता है) – adhominem

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