मैं एंटिटी फ्रेमवर्क कोड-प्रथम के साथ .NET फ्रेमवर्क संस्करण का उपयोग करते हुए एक बहुत ही सरल क्वेरी से संबंधित कुछ अजीब अजीब देख रहा हूं। LINQ2Entities क्वेरी इस तरह दिखता है:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
इसे निष्पादित करने में 3000 मिलीसेकंड से अधिक का समय लगता है। उत्पन्न SQL बहुत सरल दिखता है:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
प्रबंधन स्टूडियो के माध्यम से चलने पर यह क्वेरी लगभग तुरंत चलती है। जब मैं SqlQuery फ़ंक्शन का उपयोग करने के लिए C # कोड बदलता हूं, तो यह 5-10 मिलीसेकंड में चलता है:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
तो, एक ही एसक्यूएल, परिणामी इकाइयां दोनों मामलों में परिवर्तन-ट्रैक हैं, लेकिन दोनों के बीच जंगली पूर्ण अंतर है। क्या देता है?
Performance Considerations for Entity Framework 5