2010-06-22 7 views

Respuesta

6

No, si no se llaman correctamente en el IQueryable en lugar del IEnumerable, se compilan como expresiones y luego se traducirán a SQL.

Puede usar la información sobre herramientas de intellisense para ver cuál será el método actualmente llamado. Si el primer parámetro del método de extensión es IEnumerable en lugar de IQueryable, se encontrará con una consulta de base de datos.

+1

¿Estás seguro de que llamar a GroupBy en un IEnumerable en lugar de un IQueryable hará que la consulta se envíe a la base de datos? Pensé que era solo cuando comienzas a enumerar que se envió la consulta. –

0

No, al llamar a Select() y GroupBy() no golpearán la base de datos. Solo cuando se requiere el resultado real (al enumerar, usar ToList(), ToArray(), Count() etc) se ejecutará la consulta en la base de datos.

1

No, Select, GroupBy y la mayoría de los otros métodos no provocarán una solicitud de base de datos. Por lo general, una solicitud de base de datos solo se realizará cuando haga algo que requiera que se conozcan los resultados, como llamar al Count o ToList como mencionó.

Para ayudarlo a ver cuándo se realizan las consultas a la base de datos, puede ayudar a registrarlas. Luego, al recorrer el código, puede ver cuándo se envía la consulta.

+0

Gracias por la sugerencia, pero no creo que pueda ver un registro en ejecución Linq-to-entities ... – user169867

+0

Quizás pueda ver esta pregunta y sus respuestas: http://stackoverflow.com/questions/137712/sql-tracing-linq-to-entities –

Cuestiones relacionadas