2009-06-23 9 views
21

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

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

क्या कोई काम है?

+1

शायद आप हमें कुछ उदाहरण दे सकते हैं जो आप ईएफ के साथ कर रहे हैं जो 'धीमा धीमा' है? मुझे ज्यादातर मामलों में ईएफ को काफी धीमा नहीं पाया गया है जब तक कि मैं कुछ ऐसा नहीं कर रहा जो इसे अक्षम कर देता है। –

उत्तर

19

अच्छी तरह से संग्रहित प्रक्रियाएं संगत नहीं हैं। तो अपने SPROC को कॉल करने का कोई तरीका नहीं है और EF स्वचालित रूप से() या कुछ का उपयोग करके, उसी क्वेरी में संबंधों को स्वचालित रूप से पॉप्युलेट करता है।

तो कहते हैं कि तुम उत्पादों और श्रेणियों

है और आप उत्पाद प्राप्त करने के लिए एक sproc है:

अर्थात

var products = context.GetProducts(someproductfilter); 

जिसके परिणामस्वरूप उत्पादों अपनी श्रेणियों लोड नहीं होगा।

लेकिन यदि आप एक दूसरे संग्रहीत प्रक्रिया है कि ने कहा कि उत्पादों के लिए श्रेणियाँ हो जाता है:

यानी

var categories = context.GetCategoriesForProducts(someproductfilter); 

एफई में एक फीचर संबंध Fixup कहा जाता है, जो संबंधित संस्थाओं लिंक एक बार दूसरी इकाई में प्रवेश करती है संदर्भ, बीमा करेगा कि दोनों कॉल किए जाने के बाद, उत्पादों में प्रत्येक उत्पाद में एक गैर-शून्य श्रेणी होगी।

यह आदर्श नहीं है, क्योंकि आप एक से अधिक प्रश्न कर रहे हैं, लेकिन यह काम करेगा।

एक विकल्प EFExtensions का उपयोग करना है। जिसने लिखा था वह व्यक्ति जो स्पॉक्स लिखने की क्षमता बनाता है जो एक ही समय में अधिक डेटा लोड करता है।

आशा इस

चीयर्स में मदद करता है एलेक्स

+0

क्या यह उत्तर अद्यतित है?- मैं बिल्कुल ओपी के समान दिख रहा हूं। –

+0

@ क्रिस्टियन निसान ने कभी यह पता लगाया कि क्या कोई बेहतर तरीका है? 5 साल हो गए हैं इसलिए आशा है कि ईएफ 6 का समाधान होगा। टिप्पणी के लिए – Todilo

4

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

उत्तर हाँ है, ईएफ 6 ने चीजों को बदल दिया है, लेकिन एसपी का उपयोग करते समय नेविगेशन गुणों को लोड करने में मदद के लिए कुछ भी नहीं जोड़ा। न ही आप इस SO question में पूछे गए एसपी के साथ .clude() विधि का उपयोग कर सकते हैं।

एकमात्र तरीका अपने एसपी को विशेष रूप से नेविगेशन गुणों को लोड करने के लिए लिखना है। हालांकि एसपी का उपयोग करने पर अब कुछ अच्छा माइक्रोसॉफ्ट दस्तावेज है - Query SP और SP returning multiple result sets देखें।

ईएफ संस्करण 6 में लाया गया परिवर्तन पूर्ण करने के लिए संग्रहीत प्रक्रियाओं (एसपी) को सम्मिलित करने, अद्यतन करने और हटाने के लिए अनुमति देने के लिए था - Microsoft article और Entity Framework Tutotial देखें।

+0

धन्यवाद – user48545

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

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