180 likes | 431 Views
Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008 ADO.Net Entity Framework. ADO.Net Entity Framework.
E N D
Lenguaje de Programación .Net LDP3501: Visual Studio .Net 2008 ADO.NetEntity Framework.
ADO.NetEntity Framework Una de las metas principales de la nueva versión de ADO.NET es elevar el nivel de abstracción de la programación contra fuentes de datos a través de la eliminación del "vacío" existente entre los modelos de datos y los lenguajes de programación. Y ¿Cómo es posible esto? A través de dos innovaciones claves de la plataforma: LINQ y ADO.NET Entity Framework.
ADO.NetEntity Framework Características • Es un Framework que permite manipular y acceder a los datos como clases .NET. • Permite realizar un modelado de datos a nivel conceptual (aplicaciones y esquemas de BD). • Permite una mejor interacción de los datos con el entorno .NET: Se interactúa con objetos, frente a hacerlo con filas y columnas. • Permite describir los datos de la aplicación e interactuar con ellos a un nivel de abstracción conceptual claramente alineado con el concepto de implementación de aplicaciones de negocio. • Se apoya en LINQ para definir las consultas a objetos del esquema EDM (Entity Data Model). • Independiza las aplicaciones de el esquema de BD subyacente.
ADO.NetEntity Framework • La mencionada independencia con el esquema y la tecnología de Base de Datos, se logra básicamente en una arquitectura dividida en dos partes diferenciadas, Modelo de Datos y Modelo Conceptual (EDM). Arquitectura DataSource
ADO.NetEntity Framework • Fuente de Datos • Corresponde al almacén de datos físicos. • Proveedores de Datos • Los datos se acceden mediante un proveedor de datos ADO.Net. Arquitectura DataSource
ADO.NetEntity Framework • Modelo de Entidades de Datos • • Lenguaje de Definición del Esquema Conceptual: Declara y define las entidades, asociaciones y herencia. • • Lenguaje de Definición del Esquema del Almacén: Metadatos que describen el contenedor del almacenamiento (base de datos). • • Lenguaje de Especificación de Mapeo: Mapa de las entidades en el CSDL a las tablas descritas en el SSDL. Arquitectura DataSource
ADO.NetEntity Framework • Entidad Cliente • Proveedor administrado por ADO.Net que permite el acceso a los datos descritos en el EDM. Es similar a un SQLClient u OracleClient. Provee de un conjunto de componentes como EntityCommand, EntityConnection y EntityTransaction. • Servicios de Objetos • Este componente permite consultar, insertar, actualizar y eliminar datos, expresados como objetos CLR fuertemente tipados que son instancias de los tipos de entidades. Arquitectura DataSource
ADO.NetEntity Framework • EntitySQL • Es un derivado de Transact-SQL, diseñado para consultar y manipular entidades definidas en el Modelo de Datos de la entidad. • LINQ toEntities • Se trata de un lenguaje de consulta fuertemente tipada, para consultas contra entidades definidas en el Modelo de Datos de la entidad. Arquitectura DataSource
ADO.NetEntity Framework Definiendo un Modelo de Entidades
ADO.NetEntity Framework Definiendo un Modelo de Entidades
ADO.NetEntity Framework Definiendo un Modelo de Entidades
ADO.NetEntity Framework Definiendo un Modelo de Entidades
ADO.NetEntity Framework Consulta de entidades /* Instancia del modelo de entidades creado */ EmpresasEntitiesmodeloEmpresas = new EmpresasEntities(); /* Consulta de entidades */ varempleados = (from empleado in modeloEmpresas.Empleado selectempleado); foreach(Empleado emp in empleados) { /* Carga la empresa referenciada */ emp.EmpresaReference.Load(); /* Muestra la información del Empleado */ Console.WriteLine("Rut: {0}, Nombre : {1} {2}, Empresa : {3} ", emp.Rut, emp.Nombres, emp.Apellidos, emp.EmpresaReference.Value.RazonSocial); }
ADO.NetEntity Framework Actualización de entidades /* Consulta para obtener la entidad que se actualizará */ /* Empleado Bart Wall */ Empleado empleadoModificado = modeloEmpresas.Empleado.First ( emp => emp.Rut == 1005811 ); Console.WriteLine("Nombre Empleado = {0} {1}", empleadoModificado.Nombres, empleadoModificado.Apellidos); /* Cambia su Apellido y actualiza el modelo */ empleadoModificado.Apellidos = "Simpson"; modeloEmpresas.SaveChanges();
ADO.NetEntity Framework Creación de entidades /* Crea la nueva instancia del empleado */ Empleado empleadoNuevo = new Empleado(); empleadoNuevo.Rut = 12345678; empleadoNuevo.Dv = "9"; empleadoNuevo.Nombres = "Juan"; empleadoNuevo.Apellidos = "Perez"; /* Carga y asigna la empresa respectiva */ Empresa empresa = modeloEmpresa.Empresa.First(e => e.Rut == 98691599); empleadoNuevo.Empresa = empresa; //Accede por la Entidad /* Agrega el empleado al modelo y lo actualiza */ modeloEmpresa.AddToEmpleado(empleadoNuevo); modeloEmpresa.SaveChanges();
ADO.NetEntity Framework Eliminación de entidades /* Consulta para obtener la entidad que se eliminará */ /* Empleado Juan Perez */ Empleado empleadoEliminado = modeloEmpresas.Empleado.First (emp=> emp.Rut == 12345678); Console.WriteLine("Empleado antes de borrar {0}", modeloEmpresas.Empleado.Count()); modeloEmpresas.DeleteObject(empleadoEliminado); modeloEmpresas.SaveChanges(); Console.WriteLine("Empleado después de borrar {0}", modeloEmpresas.Empleado.Count());
Arquitectura en Capas Actividad 2: • Controles enlazados a datos mediante entidades (EDM)