Publicado el 11 de Junio del 2021
556 visualizaciones desde el 11 de Junio del 2021
418,9 KB
23 paginas
Creado hace 16a (16/04/2009)
Integración de Sistemas
ADO.NET
Entity Framework
Integración de Sistemas
Integración de Sistemas
Parte II. Diseño e implementación de
aplicaciones Web con .NET
Contenido
Introducción
¿Por qué el Entity Framework?
¿Qué es el ADO.NET Entity Framework?
Arquitectura y componentes
Proveedores específicos de EF
Entity Data Model (EDM)
Entity Client (eSQL)
Object Services (eSQL, Linq to Entities)
Implementación de DAOs con Entity Framework
Curso 2008 - 2009
1
Integración de Sistemas
Introducción
¿Por qué el Entity Framework?
Desajuste de impedancias (impedance mismach)
Diferencias entre los modelos relacionales y los modelos de objetos
Diferencias entre los modelos relacionales y los modelos de objetos
Diseños guiados por modelos de dominio (Domain Driven Design,
DDD)
Proponen centrarse en el modelo conceptual o dominio de trabajo para
resolver el problema
Dan prioridad al problema a resolver!
Patrones en DDD
VO, Lazy Loading, Data Mapper, Unit of Work
Introducción
¿Por qué el Entity Framework?
Ignorancia de la persistencia (Persistence Ignorance)
Propugna el trabajo con objetos VO que para nada tengan que
Propugna el trabajo con objetos VO que para nada tengan que
saber sobre el almacenamiento subyacente
Construcción de objetos POCO (Plain Old CLR Objects)
Relajación: IPOCO
EF soportará objetos POCO en la segunda versión. En la primera
versión podemos trabajar con objetos IPOCO
Curso 2008 - 2009
2
Integración de Sistemas
Introducción
¿Qué es el ADO.NET Entity Framework?
Es un OR/M (Object Relational / Mapping) para .NET
Incluído en .NET Framework 3.5 SP1 y en VS2008 SP1 (11 de agosto de 2008)
Incluído en .NET Framework 3.5 SP1 y en VS2008 SP1 (11 de agosto de 2008)
Incluye un nuevo proveedor de ADO.NET, llamado Entity Client, que habliita el acceso a los
modelos conceptuales
Incluye dos componentes fundamentales:
Recursos para el entorno de trabajo:
Asistente para diseño en VS y generación de código
Librería:
Librería:
Físicamente, en el ensamblado System.Data.Entity.dll
Sus espacios de nombres se anidan en System.Data (System.Data.Common,
System.Data.EntityClient, System.Data.Mapping, System.Data.Metadata.Edm, etc.)
Arquitectura y componentes
Componentes de la arquitectura de EF
Curso 2008 - 2009
3
Integración de Sistemas
Arquitectura y componentes
Arquitectura y componentes
Proveedores específicos de EF
Fabricante
Devart (CoreLab)
IBM
MySQL AB
Npgsql
OpenLink
Phoenix
Phoenix
Sybase
Vista DB
Datadirect Tech.
Firebird
Provider para
Oracle, MySQL, PostgreSQL, SQLite
DB2, Informix Dynamic Server, U2
MySQL
PostgreSQL 7.3+ y 8.x
Oracle, Ingres, Informix, Sybase, MySQL, PostgreSQL, DB2,
Progress, SQL Sever, (cq. Datasource OpenLink ODBC o
bridge JDBC)
SQLite Database
SQLite Database
SQL Anywhere
VistaDB databases
Orable, Sybase, SQL Server, DB2…
Firebird databases
Curso 2008 - 2009
4
Integración de Sistemas
Arquitectura y componentes
Entity Data Model (EDM)
El modelo de datos basado en entidades permite
Definir los conjuntos de entidades y relaciones entre las entidades de nuestros
Definir los conjuntos de entidades y relaciones entre las entidades de nuestros
modelos conceptuales
Especificar cómo estos tipos se mapearán a la estructura de la fuente de
almacenamiento relacional subyacente
Para apoyar al EDM, se dispone de una serie de herramientas
integradas dentro del entorno
1 Diseñador de modelos EDM (Entity Data Model Designer)
1. Diseñador de modelos EDM (Entity Data Model Designer)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
3. Asistente de actualización de modelos
Arquitectura y componentes > Entity Data Model (EDM)
1. Diseñador de modelos EDM (Entity Data Model Designer)
Herramienta visual integrada dentro de VS 2008 que permite crear y editar
modelos conceptuales
Componentes:
Superficie de diseño: crear y editar modelos
Detalles de mapeo: ver y editar mapeos
Navegación por el modelo: ver árboles de información sobre el modelo
coneptual y el modelo físico
Nuevos elementos dentro de la ventana de herramientas
Curso 2008 - 2009
5
Integración de Sistemas
Arquitectura y componentes > Entity Data Model (EDM)
1. Diseñador de modelos EDM (Entity Data Model Designer)
El EDM designer opera sobre ficheros edmx. Estos ficheros (XML) están
formados por tres secciones:
SSDL (Storage Schema Definition Language): estructura física de la BD
CSDL (Conceptual Schema Definition Language): entidades del modelo
conceptual
MSL (Mapping Schema Language): también conocida como sección C-S,
especifica cómo se relacionan las entidades del modelo conceptual con las
tablas, columnas, etc. del modelo físico
Arquitectura y componentes > Entity Data Model (EDM)
1. Diseñador de modelos EDM (Entity Data Model Designer)
Curso 2008 - 2009
6
Integración de Sistemas
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Encargado de generar el archivo edmx
Permite crear el modelo a partir de una BD ya existente o generar un
Permite crear el modelo a partir de una BD ya existente o generar un
modelo vacío
Agregando un modelo de EDM
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Asistente de creación de EDM (1)
Curso 2008 - 2009
7
Integración de Sistemas
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Asistente de creación de EDM (2)
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Asistente de creación de EDM (3)
Curso 2008 - 2009
8
Integración de Sistemas
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Vista gráfica del archivo edmx
Arquitectura y componentes > Entity Data Model (EDM)
2. Asistente de modelos de entidades (Entity Data Model Wizard)
Vista XML del archivo edmx
Curso 2008 - 2009
9
Integración de Sistemas
Arquitectura y componentes > Entity Data Model (EDM)
3. Asistente de actualización de modelos
Permite actualizar el modelo EDM después de que se hayan
realizado cambios en la BD
Arquitectura y componentes > Entity Data Model (EDM)
Herencia
El Modelo Relacional no soporta directamente el concepto de
herencia
La herencia se representa comúnmente en una base de datos de una de las tres
siguientes formas:
Mapeando una jerarquía entera de herencia a una sola tabla
Tabla por jerarquía, Table per Hierarchy (TPH)
Mapeando cada tipo en una jerarquía de herencia a una tabla diferente
Tabla por tipo concreto, Table per Type (TPT)
Mediante una aproximación híbrida donde la información común está en una tabla
única y existen tablas adicionales que contienen las columnas añadidas para cada tipo
derivado
Tabla por subclase , Table per Subclass (TPS)
El EF soporta mapeado a cualquiera de estos tres modelos de
herencia
Curso 2008 - 2009
10
Integración de Sistemas
Arquitectura y componentes
Entity Client
Es un nuevo proveedor de ADO.NET
En lugar de trabajar con modelos físicos trabaja con modelos EDM
En lugar de trabajar con modelos físicos trabaja con modelos EDM
Es agnóstico con respecto a la BD subyacente
Implementa una arquitectura abierta y es capaz de trabajar con diferentes
proveedores de EF específicos
Estos proveedores se encargan de traducir las consultas sobre el modelo en consultas
en el dialecto específico de la BD subyacente, así como de la ejecución de dichas
consultas y la recuperación de los resultados
El lenguaje utilizado para consultar los modelos de EDM se llama Entity SQL
(eSQL)
Es una variante de los dialectos de SQL
Mejora ciertos aspectos de las consultas, como la navegación entre tablas
Arquitectura y componentes > Entity Client
Entity SQL
Ej: consultar el número de cuentas
ConnectionStrings["MiniBankEntities"].ToString();
String connectionString = ConfigurationManager.
Int64 userId = 1234;
using (EntityConnection connection =
{
new EntityConnection(connectionString))
connection.Open();
EntityCommand command = connection.CreateCommand();
//Entity SQL does not support the count(*) aggregate. Use count(0) instead.
command.CommandText =
"SELECT count(0) " +
SELECT count(0)
+
"FROM MiniBankEntities.Account as t " +
"WHERE t.usrId = @usrId";
command.CommandType = CommandType.Text;
Curso 2008 - 2009
11
Integración de Sistemas
Arquitectura y componentes > Entity Client
Entity SQL
Ej: consultar el número de cuentas (cont.)
EntityParameter usrIdParameter = command.CreateParameter();
usrIdParameter.ParameterName = "usrId";
usrIdParameter.DbType = DbType.Int64;
usrIdParameter.Value = userId;
command.Parameters.Add(usrIdParameter);
/* It caches the query plan of the SQL dialect generated */
command.EnablePlanCaching = true;
int numberOfAccounts = (int)command.ExecuteScalar();
connection Close();
connection.Close();
Console.WriteLine("Number of Accounts: " + numberOfAccounts);
}
Arquitectura y componentes > Entity Client
Entity SQL
Es posible consultar el SQL generado
String generatedSQL = command ToTraceString();
String generatedSQL = command.ToTr
Comentarios de: Parte II. Diseño e implementación de aplicaciones Web con .NET - ADO.NET Entity Framework (0)
No hay comentarios