EF 4.0: Método Include sin hardcodear las propiedades de navegación

Tal y como comentaba en el último Tip de rendimiento de EF, aquí, el uso del método de expansión de consultas de ADO.NET EF conocido como Include tiene la pega de que es necesario entrecomillar los distintos path de las navegaciones. Como en cualquier otro elemento, el problema básico de poner entre comillas un elemento, es que el compilador no será capaz de advertirnos de esos elementos puesto que para el cualquier cosa será correcta. Imagínese que en el código de sus consultas utiliza este método de expansión de consultas y que posteriormente decide cambiar/eliminar alguno de los nombres de las propiedades de navegación, entonces el código compilará pero en ejecución fallara si estos path de navegación son incorrectos.

Una forma de resolver este problema es por medio de la creación de un nuevo método extensor en el que en vez de escribir un string con el path de navegación podamos establecer un arbol de expresiones que sea capaz de indicarnos realmente el camino de la expansión de consultas. En vez de partir de cero, el tiempo es oro, pondré el mismo trozo de código que he utilizado para la iniciativa de arquitectura de Microsoft, que conocemos con NLayer y que está alojada en Codeplex.

 

 

Gracias a este método extensor, si se requiere hacer una expansión de consultas podríamos escribir algo como lo que sigue:

Por lo tanto, si se renombran o se eliminan las propiedades de navegación, dentro de un modelo EDM el compilador podrá detectar errores al evaluar las expressiones como c=>c.CustomerPicture.

 

NOTA IMPORTANTE 1:  Cómo se ha comentado en este mismo post esta implementación esta contenida dentro de http://microsoftnlayerapp.codeplex.com y tiene algun elemento que depende de la misma como InMemoryObjectSet, revise este código.    

 

NOTE IMPORTANTE 2:  Esta forma de implementar el método extensor de Include tiene una limitación importante que consiste en que solamente se pueden agregar más de un path de navegación si se hace por medio de relaciones 1..0|1.                

 

Saludos

Unai Zorrilla

Un comentario sobre “EF 4.0: Método Include sin hardcodear las propiedades de navegación”

  1. Este es un mecanismo muy utilizado en toda aplicación RIA usando MVVM. Para que el RaisePropertyChange de las propiedades del ViewModel puedan ser tipadas. Creo que también es una opción más que acertada utilizarla en Entity Framework. Todo lo que sea tipado!!! Bienvenido sea! 😉

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *