sql >> Base de Datos >  >> RDS >> Sqlserver

El recuento de Entity Framework Core no tiene un rendimiento óptimo

No hay mucho que responder aquí. Si su herramienta ORM no produce la consulta SQL esperada a partir de una consulta LINQ simple, no hay forma de que pueda dejar que lo haga reescribiendo la consulta (y no debería estar haciendo eso en primer lugar).

EF Core tiene un concepto de evaluación mixta de cliente/base de datos en consultas LINQ lo que les permite lanzar versiones de EF Core con procesamiento de consultas incompleto/muy ineficiente como en su caso.

Extracto de Características que no están en EF Core (tenga en cuenta la palabra no ) y Roadmap :

En breve, están planeando mejorar el procesamiento de consultas, pero no sabemos cuándo sucederá eso y qué nivel de grado (recuerde que el modo mixto les permite considerar que las consultas "funcionan").

Entonces, ¿cuáles son las opciones?

  • Primero, manténgase alejado de EF Core hasta que sea realmente útil. Regrese a EF6, no tiene tales problemas.
  • Si no puede usar EF6, manténgase actualizado con la última versión de EF Core.

Por ejemplo, tanto en v1.0.1 como en v1.1.0, su consulta genera el SQL deseado (probado), por lo que simplemente puede actualizar y el problema concreto desaparecerá.

Pero tenga en cuenta que junto con las mejoras, las nuevas versiones introducen errores/regresiones (como puede ver aquí EFCore que devuelve demasiadas columnas para una combinación LEFT OUTER simple por ejemplo), hágalo bajo su propio riesgo (y considere la primera opción nuevamente, es decir, Cuál es el adecuado para usted :)