Mejoras en Entity Framework 4
Gracias al feedback recibido por gran parte de la comunidad de desarrolladores, la siguiente versión de EF (2.0 aunque finalmente será llamada 4.0 para alinearla con el Framework) incorporará un montón de novedades interesantes. Os dejo con una lista de las más interesantes:
Foreign Keys
Ahora Entity Framework incluye soporte para foreign keys. Esto permitirá incluir estas propiedades en nuestras entidades, simplificando algunos escenarios, como la vinculación de datos o el desarollo en N-Capas. En el siguiente ejemplo se inicializa una entidad, usando una propiedad de tipo foreign key:
using (BlogEntities ctx = new BlogEntities()) {
Post myPost = new Post {
PostID = 102,
PostName = "Post Title",
CreatedDate = DateTime.Now,
PostContent = "Post Content",
BlogID = 11
};
ctx.Posts.AddObject(myPost);
ctx.SaveChanges();
}
Notar que a pesar de que el objeto Blog con BlogId = 11 no se carga en ningún momento, somos capaces de conectarlo al nuevo post directamente.
Soporte para Lazy Binding (carga perezosa)
Entity Framework incluye ahora soporte para carga perezosa. Cuando creamos un nuevo modelo de datos con Visual Studio 2010, las entidades que ofrecen carga perezosa son generadas por nosotros. Este tipo de carga (que está activada por defecto) no carga cada objeto devuelto hasta que se usa. Por ejemplo, en el código siguiente, cada uno de los posts no se carga hasta que se imprime su propiedad PostName:
using (var ctx = new BlogEntities()) {
foreach (var b in ctx.Blogs) {
Console.WriteLine(b.BlogName);
//Note that we don't explicitly load the posts for the current blog,
//the EF does it 'lazily' for us.
foreach (var p in b.Posts)
Console.WriteLine(p.PostName);
}
}
Soporte para POCO
Ahora Entity Frameworkofrece soporta Plain Old CLR Object Support (POCO) para las entidades. Esto es una mejora en entornos TDD (test-driven development) o DDD (domain-driven design), que permite eliminar dependencias de EF en nuestras entidades. Para más información acerca de esta característica, darle un vistazo a los walkthroughs postedados en el ADO.NET blog.
Text Template Transformation Toolkit Code Generation
En la primera versión de Entity Framework, la generación de código no permitía demasiada personalización, y no estaba integrada en Visual Studio. En cambio, ahora EF soporta Text Template Transformation Toolkit (también llamada T4), que permite la personalización del código generado. Haciéndolo sencillo, flexible y muy potente. La integración con VS es total, de modo que para definir la estrategia de la generación de código basta con hacer click con el botón derecho sobre el diseñador de Entity Framework y seleccionar ‘Add Code Generation Item…’:
Lo mejor de todo es que no estamos limitados a las plantillas que vienen con Visual Studio, si no que podemos escribir nuestras propias plantillas T4, o modificar las plantillas que vienen por defecto, para mejorar la generación de código a nuestro gusto.
Mejor soporte N-Capas
Un diseño en N-Capas te permite separar los datos, logica e negocio y las capas de interacción con el usuario, para asegurar la integridad de los datos y mejorar el mantenimiento de cada capa. El equipo de EF ha recibido muchas peticiones para mejorar el soporte de N-Capas. Ellos han recogido este feedback y han implementado mejoras en el API para permitir diseño N-Capas, como plantillas para la generación de código, que generan objetos que contienen características N-Capas, como el demandado control de cambios. La plantilla genera éstas entidades como un conjunto de clases del CLR con atributos de serialización de Windows Communication Foundation (WCF), para poder ser usados en conjunción con los servicios WCF.
Majoras en la generación del código SQL:
El equipo de EF está constantemente tratando de mejorar la claridad y el rendimiento del código SQL generado. Así, se han implementado un gran número de éstas pequeñas mejoras al código generado por EF4. Desde la eliminación de algunos JOINS *extraños*, hasta el uso de los carácteres comodín en las cláusulas WHERE. Por ejemplo, el siguiente ejemplo se traducirá en una consulta SQL que usa una cláusula WHERE con un LIKE y un carácter ‘%’ para devolver todos los blogs cuyo nombre comienza por “Visual Studio”:
var query = from b in ctx.Blogs
where b.BlogName.StartsWith("Visual Studio")
select b;
Soporte ampliado para procedimientos almacanados
Muchas bases de datos contienen procedimientos almacenados que realizan tareas personalizadas. Ahora EF nos permitirá crear funciones en nuestro modelo de entidades que llamen a éstos procedimientos almacenados mediante la característica ‘Add Function Import’. Esta característica permitirá detectar las columnas que retorna un procedimiento almacenado y crear un tipo complejo personalizado. Y lo más importante, también permitirá actualizar tipos complejos ya existentes a la definición del tipo devuelto por un procedimiento almacenado:
Entity Framework 4 ofrece estas y otras nuevas características para incrementar la productividad de los desarrolladores. Comparte tus ideas con el equipo de desarrollo de EF en el foro del proyecto, o contacta con ellos en sus blogs de diseño o del equipo. Y pos supuesto, dale un vistazo a los videos y screencasts disponibles en Channel 9.
Nota: Traducido ‘al vuelo’ desde el blog de Somasegar. Consulta el artículo original.
Saludos desde Andorra a –8º :-S
10 Responsesso far
impresionante… parece que lleva un montón de mejoras
lo que más curiosidad me ha despertado es el soporte a N-capas, habrá que ver cómo lo han hecho, esto de la generación automática de código a veces genera ciertas desconfianzas entre algunos sectores más arcaicos de la informática 😛
Grande! Por fin podemos usar procedures que devuelvan conjuntos de resultados sin vistas intermedias!
@Jesus: «…, esto de la generación automática de código a veces genera ciertas desconfianzas entre algunos sectores más arcaicos de la informática»
La generación automática de código no implica calidad, no implica que se haga correctamente y encorseta además, el código en sí.
La desconfianza no es en este caso algo inherente a sectores arcaicos de la informática, sino a la propia prudencia en sí.
No me considero arcaico y no me gustan los generadores automáticos de código. Puede haber excepciones, pero son las que menos… normalmente nos hace dependientes de la herramienta que lo genera.
Un saludo.
Jorge
@Jesús, @Jorge: En *mi caso particular*, nunca he sido partidarios de la generación automática de código (salvo cuando lo genero yo, claro :-D).
Sin embargo en este caso, y gracias a las plantillas T4, creo que si no te gusta el código generado siempre puedes adaptarlo a tus necesidades. En fin, habrá que probarlo! :-)))
Una de las novedades que vienen con la versión 4.0 de ADO.NET Entity Framework es el soporte para
Un ejemplo claro: http://joseg2006.spaces.live.com/default.aspx?sa=527158695
Excelente aporte graciass..
Complementando el post de Luis Franco ( http://geeks.ms/blogs/lfranco/archive/2010/01/12/mejoras-en-entity
vaja kontrollida:)