मुझे इसे समझने की आवश्यकता है। इस मेरी LINQ है मेरी कोड में TSQL कोड पीढ़ीEntityFramework LINQToEntities अजीब धीमी टीएसक्यूएल उत्पन्न करता है जहां क्लॉज
में EF5.0 और EF6 बीच एक बड़ा अंतर है * -। Statemant
var qry2 = context.viw_overview_1.Where(i => i.article_EAN17 == ean).Select(i => i.article_id).Take(200);
EntityFramework 5.0 सिर्फ एक सरल और तेजी से TSQL उत्पन्न कहां - इस तरह बयान है, जो एकदम सही है
... WHERE [Extent1].[article_EAN17] = @p__linq__0
00.0960096ms in SSMS
लेकिन EntityFramework 6. * एक बहुत जटिल और धीमी गति से बयान उत्पन्न
... WHERE (([Extent1].[article_EAN17] = @p__linq__0) AND (NOT ([Extent1].[article_EAN17] IS NULL OR @p__linq__0 IS NULL))) OR (([Extent1].[article_EAN17] IS NULL) AND (@p__linq__0 IS NULL))
45.3665362ms in SSMS
फ़ील्ड आलेख_एएनए 17 में एक सूचकांक भी है। हालांकि EF6। * प्रारंभ करने के लिए वैसे भी उम्र लेता है, लेकिन EF6 में एक साधारण WHERE कथन उत्पन्न करने के लिए का कोई तरीका है। * गुणों या इस तरह के कुछ के साथ? मैंने स्ट्रिंग की कोशिश की। एक्वाल्स(), स्ट्रिंग। कॉम्पैयर(), पैरामीटर स्वैपिंग, लेकिन कुछ भी नहीं बदला।
Why does Entity Framework 6 generate complex SQL queries for simple lookups? अंतर की व्याख्या करें, लेकिन सरल टीएसक्यूएल उत्पन्न करने वाले ईएफ को मजबूर करने का कोई तरीका है।
मुझे संदेह है कि टी-एसक्यूएल परिवर्तन चीजों को धीमा कर रहा है। क्या आपने एक ही डेटासेट पर दोनों प्रश्नों का प्रयास किया था? – haim770
बस उत्सुक - क्या आपने एसएसएमएस में दो बयानों को थप्पड़ मार दिया है और उनके प्रदर्शन की तुलना की है? –
ईएफ 5 की सरल तुलना सी # में ईएफ 6 की तुलना में 5 गुना तेज है और एसएसएमएस – Roland