viernes, 9 de abril de 2010

Novedades Entity Framework 4

En estos días inmersos como estamos en pleno lanzamiento de Visual Studio 2010 y del Framework 4, me gustaría pararme a revisar algunas novedades (solo una pequeña muestra) que nos ofrece la nueva versión del Entity Framework. Soporte para POCO (Plain Old Clr Object) La nueva versión del EF soporta nativamente POCO, esto es una importante mejora (muy solicitada por parte de la comunidad) para los desarrollos orientados a pruebas TDD, esto es posible debido a que eliminamos cualquier dependencia de nuestras entidades con el EF, ya no tendran que tener propiedades como el EntityKey o implementar interfaces especificas del EF. Más información: Mejoras en el Diseño del Entity Model Ademas de la opción de crear el modelo a partir de la base de datos (Database-First) EF4 incluye Model-First que permite comenzar diseñando las entidades en el Entity Designer y posteriormente generar la base de datos y loas clases a partir del ahí. Asociación de Foreign Key EF4 incluye un nuevo tipo de asociación llamado Foreign Key Asociation que permite incluir Fk en el modelo y usarlas para relacionar las entidades. Las Asociaciones independientes de EF 3.5 todavía son soportadas pero sin duda las asociciaciones FK simplifican mucha más el modelo y su usabilidad. Para leer mas acerca de esta característica aquí. Soporte carga tardía (lazy loading) EF4 soport la carga tardía de objetos. Por defecto cuando se crea un nuevo modelo en VS2010 esta propiedad esta activada. Esto provoca que cuando realizamos una consulta y nos devuelve una colección de objetos, estos no son cargados automaticamente sino que hasta que a medida que cada uno de ellos es utilizado se van cargando. En el siguiente ejemplo, los objetos no son cargados hasta que no se utiliza para escribir una de sus propiedades.

List customers = context.Customers.ToList(); context.ContextOptions.DeferredLoadingEnabled = true;
 foreach (Customer cust in context.Customers)
   Console.WriteLine("Customer {0}, Account {1}", 
               cust.Person.LastName.Trim() + ", " + cust.Person.FirstName, cust.AccountNumber);

Patrones y Tesetabilidad

EF4 incluye una interface adicional que facilita la escritura de código orientado a pruebas usando el framework. Además para facilitar las pruebas ahora es posible el uso de patrones como el Repository y el UnitOfWork. Más información en Entity Framework 4.0 Testeability Improvements.