Lluís Franco on Geeks.ms
  • Home

Mejoras en Entity Framework 4

  • By lfranco
  • Ene-12-2010
  • Sin categoría
  • 10 Comments.

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…’:

AddCodeGenerationSmall

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:

AddFunctionImport

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

Comments

10 Responsesso far

  1. jbosch dice:
    12 enero, 2010 a las 4:09 pm

    impresionante… parece que lleva un montón de mejoras

    Responder
  2. jbosch dice:
    12 enero, 2010 a las 4:10 pm

    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 😛

    Responder
  3. anonymous dice:
    12 enero, 2010 a las 4:32 pm

    Grande! Por fin podemos usar procedures que devuelvan conjuntos de resultados sin vistas intermedias!

    Responder
  4. jorge dice:
    13 enero, 2010 a las 8:50 am

    @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

    Responder
  5. lfranco dice:
    13 enero, 2010 a las 9:21 am

    @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! :-)))

    Responder
  6. anonymous dice:
    17 enero, 2010 a las 11:01 pm

    Una de las novedades que vienen con la versión 4.0 de ADO.NET Entity Framework es el soporte para

    Responder
  7. anonymous dice:
    19 enero, 2010 a las 3:23 pm

    Un ejemplo claro: http://joseg2006.spaces.live.com/default.aspx?sa=527158695

    Responder
  8. anonymous dice:
    21 enero, 2010 a las 3:45 pm

    Excelente aporte graciass..

    Responder
  9. anonymous dice:
    13 junio, 2010 a las 10:25 pm

    Complementando el post de Luis Franco ( http://geeks.ms/blogs/lfranco/archive/2010/01/12/mejoras-en-entity

    Responder
  10. anonymous dice:
    23 enero, 2011 a las 11:10 am

    vaja kontrollida:)

    Responder

Deja un comentario Cancelar respuesta

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

← Previous Post Next Post →

Tags

async Back best practices

Entradas recientes

  • Video de mi charla en la #dotNetSpain2016
  • I’m back. Miss me?
  • Office365 actualizado a 2013 para nuevas suscripciones
  • Serializar listas genéricas en aplicaciones WinRT
  • [TPL] Problemas de concurrencia

Comentarios recientes

  • Darling Chavez en Tip: Mostrar objetos relacionados en DevExpress GridControl
  • Alexander en [TPL] Problemas de concurrencia
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • anonymous en HowTo: Crear una pantalla de inicio (splash screen)

Archivos

  • marzo 2016
  • marzo 2013
  • octubre 2012
  • septiembre 2012
  • agosto 2012
  • febrero 2012
  • diciembre 2011
  • noviembre 2011
  • octubre 2011
  • septiembre 2011
  • agosto 2011
  • junio 2011
  • mayo 2011
  • abril 2011
  • febrero 2011
  • enero 2011
  • diciembre 2010
  • noviembre 2010
  • octubre 2010
  • agosto 2010
  • julio 2010
  • marzo 2010
  • febrero 2010
  • enero 2010
  • diciembre 2009
  • noviembre 2009
  • octubre 2009
  • septiembre 2009
  • agosto 2009
  • julio 2009
  • junio 2009
  • mayo 2009
  • abril 2009
  • marzo 2009
  • febrero 2009
  • enero 2009
  • diciembre 2008
  • noviembre 2008
  • octubre 2008
  • septiembre 2008
  • agosto 2008
  • julio 2008
  • junio 2008
  • mayo 2008
  • abril 2008
  • marzo 2008
  • febrero 2008
  • enero 2008
  • diciembre 2007
  • noviembre 2007
  • octubre 2007
  • septiembre 2007
  • agosto 2007
  • abril 2007
  • febrero 2007
  • enero 2007

Categorías

  • .NET
  • C#
  • Channel9
  • Evento
  • Personal
  • Videos

Meta

  • Acceder
  • RSS de las entradas
  • RSS de los comentarios
  • WordPress.org
About This Site

A cras tincidunt, ut tellus et. Gravida scel ipsum sed iaculis, nunc non nam. Placerat sed phase llus, purus purus elit.

Archives Widget
  • January 2010
  • December 2009
  • November 2009
  • October 2009
Categories
  • Entertainment
  • Technology
  • Sports & Recreation
  • Jobs & Lifestyle
Search
  • facebook
  • twitter
  • rss

Powered by WordPress  |  Business Directory by InkThemes.

This site uses cookies: Find out more.