EF 6: Snack Preview de MapToStoreProcedures en EF 6

Por diversas razones, que no son objetivo de este post, el mapeo a procedimientos almacenados ha sido una de los issues más votados dentro del proyecto de EF 6, y por eso, tal como estaba en el roadmap inicial, el equipo ya ha empezado a trabajar en esta característica, de la cual ya tenemos algo hecho con lo que podemos jugar. Aunque aún tengo unas cuantas preguntas sin responder del equipo, con las fuentes actuales vemos como se ha incluído un nuevo método MapToStoreProcedures dentro de nuestra bien conocida clase EntityTypeConfiguration<T>.

Como se puede ver en este pequeño fragmento, gracias a este nuevo método, tendremos la posibilidad de configurar el mapeo contra los procedimientos de inserción, borrado y actualización utilizando esta configuración. Como siempre se aprende mejor de los ejemplo, a continuación ponemos el ejemplo trivial de mapeo, que nos va a permitir ver algunas cosas interesantes.

 

Como observará, con el método anterior podremos especificar los mapeos de los diferentes procedimientos, pudiendo personalizar desde el nombre de los mismos hasta el nombre de los parámetros, tanto de entrada como de salida. Bueno, hasta aquí esta pequeñita entrega, como rezaba el título era solamente un sneak… espero que los que conozcáis EF os animéis a hacer más clones y si encontráis mejoras no dudéis en contribuir…

 

Update 1: Parece que me he adelantado un pelin y la gente de ADO.NET ha liberado una especificación de esta característica mucho más completa, que complementa lo comentado aquí con tras de las estupendas características de esta nueva novedad como son:

 

  • Convenciones por defecto para los nombres de los SP. Es decir, si como anteriormente no especificamos alguna de las funciones, por defecto se buscarán los siguientes nombres de SP, type_Insert,type_Update y type_Delete. En nuestro caso Customer_Update, Customer_Insert y Customer_Delete.

 

  • Para las relaciones Many To Many hay soporte con SP para el trabajo de inserciones y borrados, revisar la especificación para más información.

Saludos

Unai