Je vois une performance vraiment étrange liée à une requête très simple utilisant Entity Framework Code-First avec .NET Framework version 4. La requête LINQ2Entities ressemble à ceci:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Cela prend plus de 3000 millisecondes à exécuter. Le SQL généré semble très simple:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Cette requête s'exécute presque instantanément lorsqu'elle est exécutée via Management Studio. Lorsque je change le code C # pour utiliser la fonction SqlQuery, il s'exécute dans 5 à 10 millisecondes:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Donc, exactement le même SQL, les entités résultantes sont suivies des modifications dans les deux cas, mais une différence de performance sauvage entre les deux. Ce qui donne?
Performance Considerations for Entity Framework 5