Ich sehe eine wirklich seltsame Leistung im Zusammenhang mit einer sehr einfachen Abfrage mit Entity Framework Code-First mit .NET Framework Version 4. Die LINQ2Entities-Abfrage sieht folgendermaßen aus:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Die Ausführung dauert über 3000 Millisekunden. Das generierte SQL sieht sehr einfach aus:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Diese Abfrage wird fast sofort ausgeführt, wenn sie über Management Studio ausgeführt wird. Wenn ich den C # -Code ändere, um die SqlQuery-Funktion zu verwenden, wird er in 5-10 Millisekunden ausgeführt:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Bei genau derselben SQL werden die resultierenden Entitäten in beiden Fällen nachverfolgt, aber es gibt einen wilden Leistungsunterschied zwischen den beiden. Was gibt?
Performance Considerations for Entity Framework 5