Entity Framework

Entity Framework permite acceder a una base de datos a traves de objetos sin necesidad de utilizar instrucciones SQL. Esto se logra mapenado tablas y sus columnas a clases y sus propiedades.
Las consultas se expresan usando LINQ que entrega como beneficio que el compilador verifica los nombres de las propiedes de los objetos y los tipos de datos, ademas Visual Studio sugiere los nombres de las propiedades en las consultas (Intellisense).

Hay dos modelos de programacion para Entity Framework, "Codigo Primero" (Code First) o "Diseñador".
En Codigo Primero escribimos las clases que representan el modelo de nuestra aplicacion. Estas clases no requieren heredar de ninguna clase base especial, ni tampoco implementar ninguna interface, son como cualquier clase del codigo fuente (POCO). Luego mapeamos las propiedades de nuestras clases a tablas de base de datos. Hay convenciones que se pueden seguir para que el mapeo requiera minimo esfuerzo. Codigo Primero ademas incluye una herramientas para crear la base de datos y sus tablas a partir de la informacion de mapeo en forma automatica, ademas es posible configurar Entity Framework para que inserte datos de prueba en la base de datos recien creada para efectos de demostracion o testing.
El segundo modelo de programacion es usar el Diseñador, en este caso partimos creando la base de datos, luego arrastramos tablas desde la base de datos al diseñador de Entity Framework el cual reconoce las relaciones entre las tablas y replica estas relaciones entre las clases que representan las tablas. Luego podemos editar este modelo en el diseñador cambiando nombres de propiedades o alterando las relaciones para que representen mas fielmente el modelo de dominio de nuestra aplicacion. La principal forma de consultar el modelo es tambien LINQ to Entities, pero ademas es posible expresar consultas como texto contra el modelo.

Los beneficios de utilizar Entity Framework son:

  • Podemos trabajar con objetos y collecciones que representan mas fielmente el dominio de la aplicacion, sin necesidad de bajar al modelo relacional.
  • El codigo de acceso dato es automaticamente portable a cualquier bases de datos que tenga un proveedor para Entity Framework, los motores mas populares lo tienen.
  • LINQ permite expresar la consultas de tal forma que el compilador verifica los nombres de propiedades y los tipos de datos, a diferencia de consultas SQL que son texto y no son verificables por el compilador.

El costo es que para aplicaciones avanzadas es necesario aprender los detalles de la API de Entity Framework para afinar el rendimiento y solucionar problemas. Por otro lado si se requiere alto rendimiento Entity Framework no puede compitir con expresar las consultas SQL con ayuda de un experto en bases de datos, pero para la mayoria de las aplicaciones la diferencia de rendimiento no es apreciable, e incluso es posible combinar consultas SQL con Entity Framework para las consultas que son mas sensibles al rendimiento.

Ejemplos y tutoriales Entity Framework
Articulos relacionados