2011-06-21 12 views
18

Estoy encontrando algunos problemas de rendimiento con mi Entity Framework Code-First y creo que la precompilación puede ser la respuesta. Si estuviera usando Entity Framework "normal", simplemente usaría el método CompiledQuery.Compile para precomponer mis consultas. Pero dado que tengo un DbContext y no un ObjectContext, no puedo hacer que esto funcione.¿Cómo precompilo un código de Entity Framework-First Query?

Me doy cuenta de que DbContext es IObjectContextAdapter, lo que me da acceso al ObjectContext, pero no puedo encontrar el método que me permita obtener un IQueryable del contexto de mi objeto que funciona en mi consulta precompilada. Traté de usar CreateObjectSet, pero cuando EF intentó ejecutar la consulta, se quejó de que no podía convertir ese método en SQL.

Entonces, ¿cuál es la mejor manera de precompilar consultas LINQ contra un Code-First DbContext?

Respuesta

8

A partir de la announecment oficial:

"No hay soporte de consulta compilada a partir DbContext Desafortunadamente, debido a algunas limitaciones técnicas en la funcionalidad de consulta compilado enviamos en .NET Framework 4.0 no somos capaces de admitir las consultas compiladas a través de la DbContext API. Nos damos cuenta de que esta es una limitación dolorosa y trabajaremos para habilitar esto para la próxima versión. "

Link.

11

Esta será probablemente resueltos en EFv4.2 EF vNext (actualmente en el very first CTP) por auto-compiled LINQ queries.

+0

Esto significa que solo estará disponible en .NET 4.5? ¿O será lanzado en EF4.3? –

+3

@Nelson: solo en .NET 4.5 –

+2

Sí, está resuelto en Entity Framework 5 y superior. –

Cuestiones relacionadas