Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 35720|Respuesta: 2

[Fuente] La diferencia entre Expresión<Func<T, bool>> y Func<T, bool> en EF

[Copiar enlace]
Publicado en 26/9/2021 9:21:21 | | | |
Func<TObject, bool> es un delegado

Expresión<Func<TObject, bool>> son expresiones

La expresión se convertirá en un delegado tras la compilación antes de poder ejecutarse. Como qué

Expression<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex. Compilar();

Entonces puedes llamar a func:

func(5) //-devuelve verdadero

func(200) //- devuelve false

Las expresiones no pueden llamarse directamente.

Caso:Un código de consulta incorrecto provoca una consulta completa de tabla en la base de datos

El código de error es el siguiente:

Pasa una variable de tipo Func como argumento al método Count,EF consulta todos los datos de toda la tabla y los filtra de la memoria。 La sentencia SQL generada se ve así:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      DbCommand ejecutado (8ms) [Parámetros=[], CommandType='Text', CommandTimeout='30']
      SELECT [c]. [id], [c]. [client_type], [c]. [estado], [c]. [inquilino]
      DE [tabla] COMO [c]
El código correcto es el siguiente:

La escritura correcta añade una condición where de la base de datos y luego devuelve directamente el valor del conteo。 La sentencia SQL generada se ve así:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Ejecutado DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT COUNT(*)
      DE [tabla] COMO [c]
      DONDE [c]. [client_type] = 1


EF Core Series 4 analiza las sentencias SQL generadas
https://www.itsvse.com/thread-9564-1-1.html
ef muestra las sentencias SQL generadas
https://www.itsvse.com/thread-3813-1-1.html

Usando llamadas a delegados Func sonSystem.Linq.EnumerableCuenta abajo

La expresión llamada con Expresión<Func<T, bool>> esSystem.Linq.ConsultyableCuenta abajo



(Fin)





Anterior:[Práctica] Haz una versión verde sin instalación de Java JDK Windows
Próximo:Java envía códigos de verificación SMS a través del SDK SMS de Alibaba Cloud
Publicado en 26/9/2021 16:19:52 |
docto
Publicado en 26/9/2021 17:31:25 |
Sí, he venido a aprender de nuevo...
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com