jueves, 19 de marzo de 2009

Introducción a ADO.NET Entity Framework


Entity Framework trae consigo la evolución del conjunto de tecnologías de acceso a datos de ADO.NET.
Antes de dar una definición formal es preciso plantear algunas problemáticas que surgen en el modelo habitual de ADO.NET (que usa Connection, Command, DataReader, etc.), analicemos el siguiente código:


class Accesoadatos {
static void GetNewOrders(DateTime date, int qty) {
using (SqlConnection con = new SqlConnection(Settings.Default.NWDB)) {
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = @"
SELECT o.OrderDate, o.OrderID, SUM(d.Quantity) as Total " +
"FROM Orders AS o LEFT JOIN [Order Details] AS d ON o.OrderID = d.OrderID " +
" WHERE o.OrderDate >= @date GROUP BY o.OrderID HAVING Total >= 1000
";
cmd.Parameters.AddWithValue("@date", date);
DbDataReader r = cmd.ExecuteReader();
while (r.Read()) {
Console.WriteLine("{0:d}:\t{1}:\t{2}", r["OrderDate"], r["OrderID"], r["Total"]);
}
}
}

Tres puntos importantes de mencionar son:




  • Lo primero es que la consulta que se realiza a la BD difiere totalmente del lenguaje de programacion utilizado. La sentencia sql no esta relaciona directamente con el codigo restante. Es decir que los programadores deben modelar las entidades, las relaciones y la lógica de los problemas empresariales que resuelven, y también deben trabajar con los motores de datos que se usan para almacenar y recuperar los datos.




  • El segundo es que la consulta incluye un LEFT JOIN no esta relacionada con la petición de negocios.




  • Los resultados son Objects para el compilador(el compilador no sabe que datos se retornarán)

ADO.Net Entity Framework permitirá a las aplicaciones usar un modelo conceptual de herencia, relaciones y datos fuertemente tipados, mapeará objetos de negocio a tablas relacionales. Con esto se elimina la impedancia que existente entre el modelo orientado a objetos y el modelo entidad-relación.

Componentes de ADO.NET Entity Framework








El Entity Framework incluye el proveedor de datos de EntityClient. Este proveedor administra las conexiones, traduce las consultas de entidad en consultas específicas del origen de datos y devuelve un lector de datos que Servicios de objeto usa para materializar los datos de la entidad en los objetos. Cuando no se requiere la materialización de los objetos, el proveedor de EntityClient también se puede utilizar como un proveedor de datos ADO.NET estándar habilitando las aplicaciones para ejecutar las consultas de Entity SQL y usar el lector de datos de solo lectura devuelto.


Los componentes principales son:





  • Un modelo de Datos de Entidades (EDM)




  • Un lenguaje que describe el esquema conceptual (CSDL).




  • Un lenguaje de mapeado de esquema lógico a conceptual (MSL)




  • Un lenguaje que describe el esquema lógico (SSDL).




  • Un motor de mapeado completo que traduce del nivel conceptual al lógico (relacional).




  • Un lenguaje de consultas denominado eSQL, similar a SQL, pero con soporte para objetos/entidades.




  • Tres modos de acceso a datos a traves de la capa de entidades conceptuales.




  • Un proveedor de acceso a datos denominado EntityClient.
    Un modelo de objetos denominado Object Services.
    Soporte para consultas vía LINQ (LINQ to Entity).




  • Extensiones para Visual Studio 2005 (editores, plantillas, etc.).

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio