Entity Framework en .NET 4

Publicación del inglés original: lunes, 11 de enero de 2010 a las 21:26 PST por Somasegar

El Entity Framework en 4 .NET tiene una gran cantidad de mejoras y características nuevas. Nos ha llegado una gran cantidad de excelentes comentarios sobre la versión inicial de Entity Framework (EF). Vamos a echar un vistazo a algunas de las novedades que llegan con Entity Framework 4.

Claves externas

Entity Framework incluye ahora compatibilidad con claves externas. Las asociaciones de claves externas le permiten incluir propiedades de clave externas en las entidades, simplificando un número de escenarios clave incluidos enlace de datos y desarrollo de n niveles. Las claves externas se pueden utilizar para configurar relaciones entre entidades usando directamente las propiedades de claves externas:

    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();

    }

En este ejemplo, aunque el objeto Blog con BlogID == 11 nunca se ha cargado, pudimos conectar nuestro nuevo objeto myPost a él directamente.

Soporte de carga diferida

Entity Framework incluye ahora compatibilidad con carga diferida. Cuando se crea un nuevo modelo en VS2010, se generan entidades que ofrecen carga diferida. La carga diferida, que está habilitada de forma predeterminada, no carga cada objeto devuelto por una consulta hasta que se utiliza realmente. Por ejemplo, la carga diferida significa que cada entrada en el siguiente fragmento de código no está cargado hasta que realmente se utiliza para imprimir la propiedad PostName del envío.

    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 de Plain Old CLR Object (POCO)

El EF4 incluye ahora compatibilidad con Plain Old CLR Object (POCO) para entidades. Esto ofrece un mejor desarrollo controlado para pruebas y compatibilidad de diseño controlado por dominio, permitiéndole no tener ninguna dependencia con el EF en sus entidades. El EF aún seguirá los cambios en las entidades POCO, permitirá la carga diferida y automáticamente arreglará los cambios de las propiedades de navegación y las claves externas. Puede encontrar más información acerca de compatibilidad POCO en los tutoriales registrados en el blog de ADO.NET (en inglés).

Generación de código con las herramientas transformación de plantilla de texto
En la primera versión de Entity Framework, la generación de código no permitía una personalización profunda y no estaba integrada en Visual Studio. El Entity Framework ahora aprovecha las herramientas transformación de plantilla de texto o T4, lo que hace que la generación de código personalizado sea fácil, flexible y eficaz. La experiencia está completamente integrada en Visual Studio. Las estrategias de generación de código integrado se pueden elegir haciendo clic en el Diseñador de Entity Framework y seleccionando ‘Agregar elemento de generación de código...’:

No tiene que limitar el uso del generador de código a las estrategias en VS 2010; también puede escribir sus propias plantillas T4 (en inglés) o modificar las plantillas existentes para adaptarlas a sus necesidades de generación de código.

Mejor soporte de N niveles

Un diseño de n niveles permite separar datos, lógica empresarial y capas de interacción para garantizar la integridad de los datos y promover la capacidad de mantenimiento en cada nivel. El equipo de Entity Framework recibió un número de solicitudes para mejoras de compatibilidad de n niveles. Han escuchado estos comentarios y realizado mejoras a la API para permitir el diseño de n niveles, así como una plantilla de generación de código que genera objetos con características de n niveles integradas, como seguimiento de cambios. La plantilla genera las entidades como un conjunto de clases CLR con atributos de serialización de Windows Communication Foundation (WCF) de modo que fácilmente se pueden utilizar junto con los servicios de WCF.

Mejoras del SQL generado

Estamos intentando constantemente mejorar la legibilidad y el rendimiento del SQL que generamos. Se han realizado numerosas simplificaciones y mejoras del SQL generado al consultar mediante Entity Framework en EF4. Una de estas mejoras es la eliminación de algunas combinaciones extrañas. Otra es el uso de comodines de la base de datos para parámetros de cadena de cláusula WHERE. Por ejemplo, la siguiente consulta LINQ se traduce en una consulta que utiliza una cláusula WHERE con una instrucción LIKE y el ‘ % ’ comodín para buscar todos los Blogs cuya propiedad BlogName comienza con "Visual Studio":

var query = from b in ctx.Blogs

where b.BlogName.StartsWith("Visual Studio")

select b;

Aunque estos cambios pueden parecer pequeños, las mejoras en el SQL generado puede producir consultas que ejecutara más rápidamente y reducen la carga en la red y los servidores SQL.

Mejora del soporte de procedimientos almacenados

Muchas bases de datos contienen procedimientos almacenados que realizan procesamiento personalizado de SQL. El Entity Framework permite crear una función en su modelo de entidad que llama a un procedimiento almacenado mediante la característica Importar función. La característica Importar función puede detectar ahora las columnas devueltas desde un procedimiento almacenado y crear el tipo complejo correspondiente. Además, los tipos complejos existentes pueden actualizarse cuando cambia una definición de procedimiento almacenado. A continuación, el Asistente de procedimiento almacenado del diseñador de Entity Framework le guía a través del proceso de importación de sus procedimientos almacenados como funciones:

El Entity Framework 4 ofrece estas y otras características nuevas para aumentar la productividad del desarrollador. Comparta sus pensamientos e ideas con el equipo en el foro del proyecto (en inglés), conecte con el equipo de Entity Framework en sus blogs de equipo (en inglés) y diseño (en inglés) y eche un vistazo los vídeos y screencasts de Channel 9 (en inglés).

¡Namaste!