Así que me han recomendado algunas veces que desactive la carga diferida al compilar una aplicación con los marcos anteriores, y que ToList() forzará la ejecución de las consultas en mi repositorio. Me dijeron que evitaría ciertas "trampas" con las que podría tropezar si utilizaba AsEnumerable().ASP.NET MVC2 con Entity Framework 4 - AsEnumerable() o ToList() en el repositorio?
En una pregunta reciente, sin embargo, incluí un montón de ToList() en mis ejemplos de código, y sorprendí a varias personas que me aseguraron que IEnumerable es mucho mejor para devolver.
Estoy completamente confundido ahora, por decir lo menos.
¿Debo devolver IEnumerable en mi repositorio y luego convertirlos a List en mis modelos de visualización? ¿Debería usar ToList() inmediatamente en mi repositorio como lo estaba antes? ¿Debía dejar la ejecución diferida habilitada en primer lugar?
Jiminy Navidad ...
Editar: lo tanto, ser discapacitado que la carga diferida, basándose en el asesoramiento antes, debería volver a activarlo, vuelvo IEnumerable/IQueryable de mi repositorio, y convertir la colección a una lista en mis modelos de vista, si es necesario?
Una de las siguientes respuestas asocia IEnumerable con ejecución ansiosa, mientras que tuve la impresión de que solo ToList() forzaría la ejecución inmediata de la consulta.
Me encontré con this, this y this que contienen algunas discusiones interesantes relacionadas con esta pregunta.
supongo parte de mi pregunta incluido o no debería estar forzando la ejecución ansiosos con la combinación dada de marcos, como algunos han advertido. – asfsadf
Además de los factores que ya he mencionado, forzar una ejecución ansiosa en realidad puede causar problemas de rendimiento; todo el conjunto de datos se devuelve de una vez, aunque el consumidor no necesite todos los datos. –
Artículo interesante. Gracias. – asfsadf