EF 4.0: Performance Tips – Recopilacion

Después de una serie un poco grande de post sobre una temática concreta siempre está bien hacer una pequeña recopilación que sirva de entrada y búsqueda más rápida. A continuación os pongo la lista de las ultimas entradas referentes a pequeños tips de rendimiento de EF.

 

Tip #1: Sobre las consultas AdHoc y las consultas parametrizadas en ADO.NET EF

Tip #2: Sobre la pregeneración de las vistas del modelo y el uso de la plantilla TT para realizarlo

Tip #3: Alguna recomendación sobre el modelado que puedes relajar nuestras consultas

Tip #4: Sobre Lazy Loading y sus implicaciones

Tip #5: Sobre las consultas AdHoc y la paginación en L2E y como resolverlo

Tip #6: Sobre los modelos complejos, herencia y demás

Tip #7: Sobre las opciones de Mezcla y seguimiento de las entidades

 

 

Espero que os sea de utilidad la recopilación,

 

Unai Zorrilla Castro

EF 4.0 Performance Tips #7

Al final está saliendo una lista interesante de tips a tener en cuenta, y la verdad, cuando empecé a escribir esto no tenía intención que fuera tan grande, tendré que ponerlo blanco sobre negro y hacer un articulo para Krasis y Scribid :-).

Este último va a ser el más sencillo de todos, aunque seguramente para entenderlo hay que saber algunas cosas de infraestructura de EF, que ya comentamos en algunos post como aquí y aquí. Cada unos de los objetos de consulta de los que se dispone dentro de nuestros contextos de trabajo generados por Entity Framework poseen una propiedad llamada MergeOption la cual nos permite establecer que criterio deseamos establecer con respecto al seguimiento de las entidades consultadas. Algunas de las opciones de este enumerado están indicadas para el tratamiento de concurrencia como PreserveChanges y OverwriteChanges, pero básicamente las opciones a discutir son si se realiza  seguimiento de las entidades o no, AppendOnly o NoTracking. En escenarios dónde los contextos tienen ciclos de vida cortos, Short Lived Context, el uso del seguimiento de las entidades no aporta nada más que una sobrecarga que generalmente no necesitamos, la sobrecarga viene de los distintos ObjectStateEntry generados cuando tenemos seguimiento. Por eso, una recomendación facil de implementar y que nos puede aportar bastantes cosas es hacer que los distintos objetos de consulta ( ObjectSet u ObjectQuery, como les queráis llamar ) tengas establecida la opción NoTracking