2012-01-20 11 views
11

He leído algunos artículos que indican que IEnumerable se utiliza para imitar procedimientos almacenados o restringir su base de datos. Perdió capacidad de carga diferida en el proveedor externo.IQueryable vs. IEnumerable en el patrón de repositorio, carga lenta

Donde como IQueryable para dar a los desarrolladores más flexibilidad. La carga lenta está ahí.

En términos de rendimiento, ambos consumen una cantidad significativa de rendimiento ... ¿cuál es más preferible?

+1

Como siempre ... depende de lo que necesite exactamente ... –

Respuesta

21

Desde la perspectiva de un modelo de repositorio, puede pensar de esta manera:

  1. utilizar un carga ansiosa IEnumerable cuando se quiere pasar una lista completa al cliente de una sola vez. Todavía pueden agregar cláusulas linq, pero el cliente no se beneficia de la ejecución diferida.

  2. Use una carga diferida IQueryable cuando desee extender las capacidades de consulta diferida al cliente, permitiendo que el cliente agregue sus propias cláusulas linq. Esto aplaza la ejecución de toda la consulta hasta que se requiera salida.

Ver también
Deferred execution and eager evaluation

0

La principal diferencia entre “IEnumerable” y “IQueryable” es acerca de dónde se ejecuta la lógica del filtro. Uno se ejecuta en el lado del cliente (en la memoria) y el otro se ejecuta en la base de datos.

Por lo tanto, al consultar datos de colecciones en memoria como Lista, Matriz, etc., debe usar IEnumerable.

Por otro lado, al consultar los datos de las colecciones de memoria externa (como bases de datos remotas, servicios) debe utilizar IQueryable.

0

IEnumerable vs IQueryable

IQueryable es mejor para los datos del lado del servidor, mientras que IEnumerable es mejor para arrays/listas que utiliza el lado del cliente.

Cuestiones relacionadas