मेरे पास एक अलग फ्रेमवर्क परियोजना है जिसमें 5 अलग-अलग टेबल हैं। जब मैं इन तालिकाओं से डेटा पूछता हूं और .Include()
का उपयोग करता हूं, तो यह उत्पन्न क्वेरी बहुत धीमी और समय समाप्त होती है।मैं अपनी ईएफ linq क्वेरी को संग्रहीत प्रक्रिया में बदल रहा हूं। जटिल मैपिंग सेट अप करने का कोई आसान तरीका है?
मैं एक संग्रहीत प्रक्रिया के लिए क्वेरी स्थानांतरित कर दिया है, और अब एक तरह से इस संग्रहीत प्रक्रिया क्वेरी, और आसानी से मैप करने के लिए डेटा यह मौजूदा डेटा वर्गों के लिए रिटर्न के लिए देख रहा हूँ।
var data = (from a in context.A
.Include("B")
.Include("C")
.Include("D")
.Include("E")
where a.Id == someValue
select a);
यह एक इकाई डेटा उद्देश्य यह है कि इस मची वापसी:
एफई के DataContext मेरे मूल LINQ क्वेरी इस तरह देखा
class A
{
int Id;
string otherProperties;
List<B> B;
List<C> C;
List<D> D;
List<E> E;
}
क्वेरी कि SQL सर्वर पर चलाने के लिए लौट आए उत्पन्न एफई एक परिणाम सेट जो इस तरह कुछ दिखता है:
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 ---------------------------------------------------------- A1 A2 B1 B2 A1 A2 C1 C2 A1 A2 C1 C2 A1 A2 C1 C2 A1 A2 D1 D2 A1 A2 D1 D2 A1 A2 D1 D2 A1 A2 E1 E2 A1 A2 E1 E2
(अनुमान 1 बी रिकॉर्ड, 3 सी रिकॉर्ड, 3 डी रिकॉर्ड, और 2 ई रिकॉर्ड।
मैंने इस क्वेरी को संग्रहीत प्रक्रिया में पुन: उत्पन्न किया है और इसके रनटाइम को व्यावहारिक रूप से कुछ भी कम नहीं किया है, हालांकि मैं अपने एंटिटी फ्रेमवर्क डेटा क्लास (क्लास A
ऊपर से) के परिणाम सेट को मैप करने का तरीका जानने के लिए अटक गया हूं।
ईएफ निश्चित रूप से इस में सक्षम है क्योंकि यह लिंक क्वेरी का उपयोग करते समय दृश्यों के पीछे कहीं भी है, लेकिन मुझे यकीन नहीं है कि अगर ऐसा कुछ है तो मुझे इसका उपयोग होगा।
वहाँ इकाई की रूपरेखा में एक आसान तरीका एक बहु स्तरीय इकाई की रूपरेखा वर्ग के लिए एक भी संग्रहीत प्रक्रिया (फंक्शन आयात) मैप करने के लिए है?
यदि ईएफ में कोई आसान विकल्प नहीं बनाया गया तो यह मेरी बैकअप योजना थी। प्रत्येक वर्ग पर बहुत सारी संपत्तियां हैं, इसलिए कनवर्टर को कोड करने के लिए यह बहुत अधिक टाइपिंग होगा। – Rachel