SlideShare una empresa de Scribd logo
1 de 51
2. APLICACIONES
WINDOWS FORM
2.3. Acceso a datos ADONET
Ejemplos
Autor(es):
Ciencias de la Ingeniería
Carrera de Sistemas
Plataformas de Desarrollo 1
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Aguaszoft@Outlook.es
Tener éxito no es cuestión de suerte, es
el resultado del esfuerzo más arduo
 (Anónimo)
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Plataformas de Desarrollo 1
Resultado de Aprendizaje
 Analizar metodologías y herramientas tecnológicas, que
mejor se ajusten a las necesidades de las organizaciones..
Contenidos
 Introducción
 Objetivos
 Desarrollo de Contenidos
 Conclusiones
 Bibliografía
Objetivos
 Adquirir los conceptos básicos relacionados con NET.
 Reconocer las características de .NET.
 Conocer la historia de .NET.
2.3. Acceso a datos ADONET
 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
Introducción
¿Por qué el Entity Framework?
 Desajuste de impedancias (impedance mismach)
 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
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
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)
 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:
 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
Arquitectura y componentes
Arquitectura y componentes
Proveedores específicos de EF
Fabricante Provider para
Devart (CoreLab) Oracle, MySQL, PostgreSQL, SQLite
IBM DB2, Informix Dynamic Server, U2
MySQLAB MySQL
Npgsql PostgreSQL 7.3+ y 8.x
OpenLink Oracle, Ingres, Informix, Sybase, MySQL, PostgreSQL, DB2,
Progress, SQL Sever, (cq. Datasource OpenLink ODBC o
bridge JDBC)
Phoenix SQLite Database
Sybase SQLAnywhere
Vista DB VistaDB databases
Datadirect Tech. Orable, Sybase, SQL Server, DB2…
Firebird Firebird databases
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
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)
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
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)
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
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)
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)
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
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, Table per Type (TPT)
 Mediante una aproximación híbrida en la que se crea una tabla por cada clase concreta
(subclase) y en la que cada una de las tablas almacena la información común
 Tabla por Clase Concreta (TPC)
 El EF soporta mapeado a cualquiera de estos tres modelos de
herencia
Arquitectura y componentes
Entity Client
 Es un nuevo proveedor de ADO.NET
 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
 String connectionString = ConfigurationManager.
 ConnectionStrings["MiniBankEntities"] ToString(); 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) " +
 "FROM MiniBankEntities.Account as t " + "WHERE
t.usrId = @usrId";
 command.CommandType = CommandType.Text;
 Ej: consultar el número de cuentas
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();
Console.WriteLine("Number of Accounts: " +
numberOfAccounts);
}
Arquitectura y componentes > Entity Client
Entity SQL
 Es posible consultar el SQL generado
String generatedSQL = command.ToTraceString();
 Para el ejemplo anterior
SELECT
1 AS [C1],
[GroupBy1].[A1] AS [C2]
FROM ( SELECT
COUNT(0) AS [A1]
FROM [dbo].[Account] AS [Extent1]
WHERE [Extent1].[usrId] = @usrId
) AS [GroupBy1]
Arquitectura y componentes
Entity Client
 Con Entity Client y eSQL podemos cubrir la mayoría de las
necesidades de una capa de acceso a datos
 Podemos consultar modelos conceptuales, de forma similar a cómo se
consultaban BD en ADO.NET 2.0
 Disponemos de clases equivalentes a las ya conocidas
 EntityConnection, EntityParameter, EntityCommand, EntityDataReader
 Sin embargo, todavía tenemos que realizar una transformación de
los datos recuperados a objetos del dominio (materialización)
 Para evitar este paso, EF ofrece una nueva capa: Object Services
Arquitectura y componentes
Object Services
 Conjunto de clases que permiten consultar y obtener resultados en términos de objetos
 Se reduce la cantidad y la complejidad del código
 Las consultas pueden realizarse
 Entity SQL (eSQL)
 Indep. del SGBD
 Strings (Interpretados en tiempo de ejecución)
 Linq (Language Integrated Queries) to Entities
 Lenguaje común y semántico
 Interpretado en tiempo de compilación
Las consultas realizadas en Entity SQL y Linq-to-Entities son convertidas internamente a
Canonical Query Tree, que se convierte a su vez en una pregunta entendible por el almacén de
datos subyacente (e.g., en SQL en el caso de una BD relacional)
 Permite seguir los cambios en los entity objects y gestionar las relaciones entre ellos
Arquitectura y componentes
Object Services
 Object Services
 EntityObject
 ObjectContext
 ObjectStateManager
Arquitectura y componentes
Object Services
 ObjectContext
 Permite trabajar con el modelo conceptual
 Consultas: ObjectQuery;
 Inserciones: .AddToXXX(XXX entity); .AddObject(…),
 Borrado: .DeleteObject
 Persistencia: .SaveChanges();
 Gestión de la conexión
 Almacén en memoria de objetos
 Tracking de estado objetos:
 .Attach(..), .Dettach(..)
 ObjectStateManager
 MergeOption
Arquitectura y componentes
Object Services
 ObjectStateManager
 Seguimiento del estado de entidades
 Gestiona entradas EntityStateEntry para cada Entidad en almacén en memoria
 Cuando se cargan (Query, Attach): Unchanged
 Cuando se crean (AddObject): Added
 Cuando se modifican: Changed
 Cuando se borran: Deleted
 Cuando se destruye el ObjectContext: Detached
 Al aplicar ObjectContext.SaveChanges() en Added, Changed, cambia a
Unchanged
Arquitectura y componentes
Object Services. Consultas. Entity SQL
 Ej: consultar el número de cuentas
using (MiniBankEntities context = new MiniBankEntities())
{
String query = "SELECT VALUE account " +
"FROM Account " +
"WHERE account.usrId = @userId";
ObjectParameter param = new ObjectParameter("userId", userId);
int result =
context.CreateQuery<Account>(query, param).Count();
Console.WriteLine(result);
}
Arquitectura y componentes
Object Services. Consultas. Entity SQL
 Ej: recuperar las cuentas de un usuario (implementando Page-by-Page)
using (MiniBankEntities context = new MiniBankEntities())
{
String query = "SELECT value account " +
"FROM Account " +
"WHERE account.usrId = @userId " +
"ORDER BY account.accId";
ObjectParameter param = new ObjectParameter("userId", userId);
List<Account> accounts =
context.CreateQuery<Account>(query, param).
Execute(MergeOption NoTracking) Skip(startIndex)
Take(count).ToList();
foreach (Account a in accounts)
{
Console.WriteLine(a.accId + ", " + a.balance);
}
}
Arquitectura y componentes
Object Services. Consultas. LINQ-to-Entities
 Ej: consultar el número de cuentas
using (MiniBankEntities context = new
MiniBankEntities())
{
int result =
(from acc in context.Account
where acc.usrId == userId
select acc).Count();
Console.WriteLine(result);
}
Arquitectura y componentes
Object Services. Consultas. LINQ-to-Entities
 Ej: recuperar las cuentas de un usuario (implementando Page-by-Page)
using (MiniBankEntities context = new MiniBankEntities())
{
List<Account> accounts =
(from a in context.Account
where a.usrId == userId
orderby a.accId
select a).Skip(startIndex).Take(count).ToList();
foreach (Account a in accounts)
{
Console.WriteLine(a.accId + ", " + a.balance);
}
Implementación de DAOs con Entity Framework
 Siguiendo el enfoque visto en la primera parte de la asignatura, se ha diseñado un
DAO genérico con las operaciones comunes a todas las clases persistentes:
 Create, Find, Exists, Update, Remove
 Cada entidad persistente tendrá su propio DAO, que extenderá el genérico para
añadir operaciones propias
 El DAO genérico se encuentra en el proyecto ModelUtil, utilizado por MiniBank y
MiniPortal como .dll
 La interfaz parametrizada del DAO genérico recibe 2 argumentos:
 E, es la clase persistente para la que se implementará el DAO
 PK, define el tipo del identificador de la clase persistente
 Los métodos están definidos en base a esos parámetros y no están acoplados a
ninguna tecnología de persistencia
Implementación de DAOs con Entity Framework
 Interfaz del DAO genérico
public interface IGenericDao<E, PK>
{
void Create(E entity);
/// <exception cref="InstanceNotFoundException"></exception>
E Find(PK id);
Boolean Exists(PK id);
E Update(E entity);
/// <exception cref="InstanceNotFoundException"></exception>
void Remove(PK id);
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
public class GenericDaoEntityFramework<E, PK> :
IGenericDao<E, PK>
where E : IEntityWithKey
{
// entityClass is set in the constructor of this class
private Type entityClass;
// context must be set by means of Context property
private ObjectContext context;
private String entityContainerName;
public GenericDaoEntityFramework()
{
this.entityClass = typeof(E);
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
[Dependency]
public ObjectContext Context
{
set
{
context = value;
entityContainerName = (context.MetadataWorkspace
GetItems<EntityContainer>(DataSpace.CSpace))[0].Name;
context.DefaultContainerName = entityContainerName;
// Forces the load of the metadata
context.MetadataWorkspace.LoadFromAssembly(
entityClass.Assembly);
}
get
{
return context;
}
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
public EntityKey CreateEntityKey(PK id)
{
EntityType entityType =
(EntityType)context.MetadataWorkspace.GetType(entityClass.Name,
entityClass.Namespace, DataSpace.CSpace);
/* We assume that the DAO works only with single field primary
* key classes
*/
String primaryKeyFieldName =
((EntityType)entityType).KeyMembers.First().ToString();
// Create the entityKey
EntityKey entityKey =
new EntityKey(entityContainerName + "." + entityClass.Name,
new EntityKeyMember[] {
return entityKey;
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
public void Create(E entity)
{
String entitySetName =
entityContainerName + "." + entityClass.Name;
context.AddObject(entitySetName, entity);
context.SaveChanges();
context.AcceptAllChanges();
}
/// <exception cref="InstanceNotFoundException"/>
public E Find(PK id)
{
EntityKey entityKey = this.CreateEntityKey(id);
try
{
E result = (E)context.GetObjectByKey(entityKey);
return result;
}
catch (ObjectNotFoundException)
{
throw new InstanceNotFoundException(id,
entityClass.FullName);
}
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
public Boolean Exists(PK id)
{
Boolean objectFound = true;
EntityKey entityKey = this.CreateEntityKey(id);
try
{
object result =
context.GetObjectByKey(entityKey);
}
catch (ObjectNotFoundException)
{
objectFound = false;
}
return objectFound;
}
public E Update(E entity)
{
// Last Updates are sent to database
context.Refresh(RefreshMode.ClientWins, entity);
context.SaveChanges();
context.AcceptAllChanges();
return (E)context.GetObjectByKey(entity.EntityKey);
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
/// <exception cref="InstanceNotFoundException"/>
public void Remove(PK id)
{
E objectToRemove = default(E);
try
{
// First we need to find the object
objectToRemove = Find(id);
context.DeleteObject(objectToRemove);
context.SaveChanges();
context.AcceptAllChanges();
}
catch (InstanceNotFoundException)
{
throw;
}
Implementación de DAOs con Entity Framework
 Implementación del DAO genérico con Entity Framework
catch (OptimisticConcurrencyException)
{
context.Refresh(RefreshMode.ClientWins, objectToRemove);
context.DeleteObject(objectToRemove);
context.SaveChanges();
context.AcceptAllChanges();
}
catch (InvalidOperationException)
{
throw new InstanceNotFoundException(id,
entityClass.FullName);
}
}
Implementación de DAOs con Entity Framework
 Para implementar la persistencia utilizando Entity Framework, el DAO
necesita un objeto ObjectContext
 Se asigna y recupera a través de la propiedad Context
 Se utilizará inyección de dependencias para establecer el valor de la propiedad Context
 Para implementar las operaciones podemos elegir EntitySQL o Linq-to-
Entities (hemos visto ejemplos de ambos)
Implementación de DAOs con Entity Framework
 Ej.: MiniBank > AccountDao
Implementación de DAOs con Entity Framework
 Ej.: MiniBank > AccountOperationDao
Bibliografía

Más contenido relacionado

La actualidad más candente

Diagramas de componentes exposicion martes
Diagramas de componentes exposicion  martesDiagramas de componentes exposicion  martes
Diagramas de componentes exposicion martesJackson Marshelo
 
Ambiente excel-comas cuesta paola dafne.
Ambiente excel-comas cuesta paola dafne.Ambiente excel-comas cuesta paola dafne.
Ambiente excel-comas cuesta paola dafne.Paolacomas
 
Funciones de ingeniería de excel
Funciones de ingeniería de excelFunciones de ingeniería de excel
Funciones de ingeniería de excelJuan David
 
Introcuccion a ms excel 1
Introcuccion a ms excel 1Introcuccion a ms excel 1
Introcuccion a ms excel 1Paito Moya
 
ANDREA HEREDIA - DANIEL ROMERO
ANDREA  HEREDIA - DANIEL ROMEROANDREA  HEREDIA - DANIEL ROMERO
ANDREA HEREDIA - DANIEL ROMEROjohannaking69
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateCarlos Hernando
 
Partes de la ventana de access
Partes de la ventana de accessPartes de la ventana de access
Partes de la ventana de accessPame
 
Microsoft Access 2007
Microsoft Access 2007Microsoft Access 2007
Microsoft Access 2007Rolf Pinto
 
Sesion 7 3 diseño diagramas de componentes
Sesion 7 3 diseño   diagramas de componentesSesion 7 3 diseño   diagramas de componentes
Sesion 7 3 diseño diagramas de componentesJulio Pari
 
Partes de la ventana de access gaby
Partes de la ventana de access gabyPartes de la ventana de access gaby
Partes de la ventana de access gabyGaby Pozo
 
Partes de la ventana de access
Partes de la ventana de accessPartes de la ventana de access
Partes de la ventana de accessPancho Tipanta
 
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml   2.5 Diagramas De ImplementacióNCurso Uml   2.5 Diagramas De ImplementacióN
Curso Uml 2.5 Diagramas De ImplementacióNEmilio Aviles Avila
 
Excel Introduccion
Excel Introduccion Excel Introduccion
Excel Introduccion santiago-28
 

La actualidad más candente (20)

Diagramas de componentes exposicion martes
Diagramas de componentes exposicion  martesDiagramas de componentes exposicion  martes
Diagramas de componentes exposicion martes
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Ambiente excel-comas cuesta paola dafne.
Ambiente excel-comas cuesta paola dafne.Ambiente excel-comas cuesta paola dafne.
Ambiente excel-comas cuesta paola dafne.
 
Funciones de ingeniería de excel
Funciones de ingeniería de excelFunciones de ingeniería de excel
Funciones de ingeniería de excel
 
Morales .Net
Morales .NetMorales .Net
Morales .Net
 
Introcuccion a ms excel 1
Introcuccion a ms excel 1Introcuccion a ms excel 1
Introcuccion a ms excel 1
 
Microsoft pdf excel
Microsoft pdf excelMicrosoft pdf excel
Microsoft pdf excel
 
ANDREA HEREDIA - DANIEL ROMERO
ANDREA  HEREDIA - DANIEL ROMEROANDREA  HEREDIA - DANIEL ROMERO
ANDREA HEREDIA - DANIEL ROMERO
 
Bases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a HibernateBases de Datos en Java - Intro a Hibernate
Bases de Datos en Java - Intro a Hibernate
 
Partes de la ventana de access
Partes de la ventana de accessPartes de la ventana de access
Partes de la ventana de access
 
Datos externos
Datos externosDatos externos
Datos externos
 
Documentos en exel
Documentos en exelDocumentos en exel
Documentos en exel
 
Microsoft Access 2007
Microsoft Access 2007Microsoft Access 2007
Microsoft Access 2007
 
Sesion 7 3 diseño diagramas de componentes
Sesion 7 3 diseño   diagramas de componentesSesion 7 3 diseño   diagramas de componentes
Sesion 7 3 diseño diagramas de componentes
 
Partes de la ventana de access gaby
Partes de la ventana de access gabyPartes de la ventana de access gaby
Partes de la ventana de access gaby
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
 
Partes de la ventana de access
Partes de la ventana de accessPartes de la ventana de access
Partes de la ventana de access
 
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml   2.5 Diagramas De ImplementacióNCurso Uml   2.5 Diagramas De ImplementacióN
Curso Uml 2.5 Diagramas De ImplementacióN
 
Excel
ExcelExcel
Excel
 
Excel Introduccion
Excel Introduccion Excel Introduccion
Excel Introduccion
 

Similar a 12-Unidad 2: Aplicaciones Windows Form-2.3: Acceso a datos ADO.NET (ejemplos)

EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
ADO NET Entity FrameWork
ADO NET Entity FrameWorkADO NET Entity FrameWork
ADO NET Entity FrameWorkmascodigo
 
Trabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETTrabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETJavier Roig
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NETV Sanchez
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
C:\Fakepath\Case001[Easy Case]
C:\Fakepath\Case001[Easy Case]C:\Fakepath\Case001[Easy Case]
C:\Fakepath\Case001[Easy Case]Roman DC
 
TUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOTUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOiberhack
 
curso-de-visual-basic-net.pdf
curso-de-visual-basic-net.pdfcurso-de-visual-basic-net.pdf
curso-de-visual-basic-net.pdfJuanEnriquez52
 
Programacion =)
Programacion =)Programacion =)
Programacion =)Diiana06
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxEddyJavierLogrooLen
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicgerardd98
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAlfredo Joya
 

Similar a 12-Unidad 2: Aplicaciones Windows Form-2.3: Acceso a datos ADO.NET (ejemplos) (20)

EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
ADO NET Entity FrameWork
ADO NET Entity FrameWorkADO NET Entity FrameWork
ADO NET Entity FrameWork
 
ADO .net
ADO .netADO .net
ADO .net
 
Trabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETTrabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NET
 
Easy case
Easy caseEasy case
Easy case
 
Programación manuel crisostomo l
Programación manuel crisostomo lProgramación manuel crisostomo l
Programación manuel crisostomo l
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Glosario vs .net
Glosario vs .netGlosario vs .net
Glosario vs .net
 
C:\Fakepath\Case001[Easy Case]
C:\Fakepath\Case001[Easy Case]C:\Fakepath\Case001[Easy Case]
C:\Fakepath\Case001[Easy Case]
 
TUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOTUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENO
 
Para Flor :P
Para Flor :PPara Flor :P
Para Flor :P
 
curso-de-visual-basic-net.pdf
curso-de-visual-basic-net.pdfcurso-de-visual-basic-net.pdf
curso-de-visual-basic-net.pdf
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Unidad 4. diseno del sistema
Unidad 4. diseno del sistemaUnidad 4. diseno del sistema
Unidad 4. diseno del sistema
 
Programacion =)
Programacion =)Programacion =)
Programacion =)
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptx
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 

Último (20)

Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 

12-Unidad 2: Aplicaciones Windows Form-2.3: Acceso a datos ADO.NET (ejemplos)

  • 1. 2. APLICACIONES WINDOWS FORM 2.3. Acceso a datos ADONET Ejemplos Autor(es): Ciencias de la Ingeniería Carrera de Sistemas Plataformas de Desarrollo 1 Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec Aguaszoft@Outlook.es
  • 2. Tener éxito no es cuestión de suerte, es el resultado del esfuerzo más arduo  (Anónimo) Ciencias de la Ingeniería Carrera de Sistemas de Información Plataformas de Desarrollo 1
  • 3. Resultado de Aprendizaje  Analizar metodologías y herramientas tecnológicas, que mejor se ajusten a las necesidades de las organizaciones..
  • 4. Contenidos  Introducción  Objetivos  Desarrollo de Contenidos  Conclusiones  Bibliografía
  • 5. Objetivos  Adquirir los conceptos básicos relacionados con NET.  Reconocer las características de .NET.  Conocer la historia de .NET.
  • 6. 2.3. Acceso a datos ADONET
  • 7.  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
  • 8. Introducción ¿Por qué el Entity Framework?  Desajuste de impedancias (impedance mismach)  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
  • 9. Introducción ¿Por qué el Entity Framework?  Ignorancia de la persistencia (Persistence Ignorance)  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
  • 10. 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)  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:  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.)
  • 11. Arquitectura y componentes Componentes de la arquitectura de EF
  • 13. Arquitectura y componentes Proveedores específicos de EF Fabricante Provider para Devart (CoreLab) Oracle, MySQL, PostgreSQL, SQLite IBM DB2, Informix Dynamic Server, U2 MySQLAB MySQL Npgsql PostgreSQL 7.3+ y 8.x OpenLink Oracle, Ingres, Informix, Sybase, MySQL, PostgreSQL, DB2, Progress, SQL Sever, (cq. Datasource OpenLink ODBC o bridge JDBC) Phoenix SQLite Database Sybase SQLAnywhere Vista DB VistaDB databases Datadirect Tech. Orable, Sybase, SQL Server, DB2… Firebird Firebird databases
  • 14. 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 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) 2. Asistente de modelos de entidades (Entity Data Model Wizard) 3. Asistente de actualización de modelos
  • 15. 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
  • 16. 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
  • 17. Arquitectura y componentes > Entity Data Model (EDM) 1. Diseñador de modelos EDM (Entity Data Model Designer)
  • 18. 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 modelo vacío Agregando un modelo de EDM
  • 19. Arquitectura y componentes > Entity Data Model (EDM) 2. Asistente de modelos de entidades (Entity Data Model Wizard) Asistente de creación de EDM (1)
  • 20. Arquitectura y componentes > Entity Data Model (EDM) 2. Asistente de modelos de entidades (Entity Data Model Wizard) Asistente de creación de EDM (2)
  • 21. Arquitectura y componentes > Entity Data Model (EDM) 2. Asistente de modelos de entidades (Entity Data Model Wizard) Asistente de creación de EDM (3)
  • 22. Arquitectura y componentes > Entity Data Model (EDM) 2. Asistente de modelos de entidades (Entity Data Model Wizard) Vista gráfica del archivo edmx
  • 23. Arquitectura y componentes > Entity Data Model (EDM) 2. Asistente de modelos de entidades (Entity Data Model Wizard) Vista XML del archivo edmx
  • 24. 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
  • 25. 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, Table per Type (TPT)  Mediante una aproximación híbrida en la que se crea una tabla por cada clase concreta (subclase) y en la que cada una de las tablas almacena la información común  Tabla por Clase Concreta (TPC)  El EF soporta mapeado a cualquiera de estos tres modelos de herencia
  • 26. Arquitectura y componentes Entity Client  Es un nuevo proveedor de ADO.NET  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
  • 27. Arquitectura y componentes > Entity Client Entity SQL  String connectionString = ConfigurationManager.  ConnectionStrings["MiniBankEntities"] ToString(); 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) " +  "FROM MiniBankEntities.Account as t " + "WHERE t.usrId = @usrId";  command.CommandType = CommandType.Text;  Ej: consultar el número de cuentas
  • 28. 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(); Console.WriteLine("Number of Accounts: " + numberOfAccounts); }
  • 29. Arquitectura y componentes > Entity Client Entity SQL  Es posible consultar el SQL generado String generatedSQL = command.ToTraceString();  Para el ejemplo anterior SELECT 1 AS [C1], [GroupBy1].[A1] AS [C2] FROM ( SELECT COUNT(0) AS [A1] FROM [dbo].[Account] AS [Extent1] WHERE [Extent1].[usrId] = @usrId ) AS [GroupBy1]
  • 30. Arquitectura y componentes Entity Client  Con Entity Client y eSQL podemos cubrir la mayoría de las necesidades de una capa de acceso a datos  Podemos consultar modelos conceptuales, de forma similar a cómo se consultaban BD en ADO.NET 2.0  Disponemos de clases equivalentes a las ya conocidas  EntityConnection, EntityParameter, EntityCommand, EntityDataReader  Sin embargo, todavía tenemos que realizar una transformación de los datos recuperados a objetos del dominio (materialización)  Para evitar este paso, EF ofrece una nueva capa: Object Services
  • 31. Arquitectura y componentes Object Services  Conjunto de clases que permiten consultar y obtener resultados en términos de objetos  Se reduce la cantidad y la complejidad del código  Las consultas pueden realizarse  Entity SQL (eSQL)  Indep. del SGBD  Strings (Interpretados en tiempo de ejecución)  Linq (Language Integrated Queries) to Entities  Lenguaje común y semántico  Interpretado en tiempo de compilación Las consultas realizadas en Entity SQL y Linq-to-Entities son convertidas internamente a Canonical Query Tree, que se convierte a su vez en una pregunta entendible por el almacén de datos subyacente (e.g., en SQL en el caso de una BD relacional)  Permite seguir los cambios en los entity objects y gestionar las relaciones entre ellos
  • 32. Arquitectura y componentes Object Services  Object Services  EntityObject  ObjectContext  ObjectStateManager
  • 33. Arquitectura y componentes Object Services  ObjectContext  Permite trabajar con el modelo conceptual  Consultas: ObjectQuery;  Inserciones: .AddToXXX(XXX entity); .AddObject(…),  Borrado: .DeleteObject  Persistencia: .SaveChanges();  Gestión de la conexión  Almacén en memoria de objetos  Tracking de estado objetos:  .Attach(..), .Dettach(..)  ObjectStateManager  MergeOption
  • 34. Arquitectura y componentes Object Services  ObjectStateManager  Seguimiento del estado de entidades  Gestiona entradas EntityStateEntry para cada Entidad en almacén en memoria  Cuando se cargan (Query, Attach): Unchanged  Cuando se crean (AddObject): Added  Cuando se modifican: Changed  Cuando se borran: Deleted  Cuando se destruye el ObjectContext: Detached  Al aplicar ObjectContext.SaveChanges() en Added, Changed, cambia a Unchanged
  • 35. Arquitectura y componentes Object Services. Consultas. Entity SQL  Ej: consultar el número de cuentas using (MiniBankEntities context = new MiniBankEntities()) { String query = "SELECT VALUE account " + "FROM Account " + "WHERE account.usrId = @userId"; ObjectParameter param = new ObjectParameter("userId", userId); int result = context.CreateQuery<Account>(query, param).Count(); Console.WriteLine(result); }
  • 36. Arquitectura y componentes Object Services. Consultas. Entity SQL  Ej: recuperar las cuentas de un usuario (implementando Page-by-Page) using (MiniBankEntities context = new MiniBankEntities()) { String query = "SELECT value account " + "FROM Account " + "WHERE account.usrId = @userId " + "ORDER BY account.accId"; ObjectParameter param = new ObjectParameter("userId", userId); List<Account> accounts = context.CreateQuery<Account>(query, param). Execute(MergeOption NoTracking) Skip(startIndex) Take(count).ToList(); foreach (Account a in accounts) { Console.WriteLine(a.accId + ", " + a.balance); } }
  • 37. Arquitectura y componentes Object Services. Consultas. LINQ-to-Entities  Ej: consultar el número de cuentas using (MiniBankEntities context = new MiniBankEntities()) { int result = (from acc in context.Account where acc.usrId == userId select acc).Count(); Console.WriteLine(result); }
  • 38. Arquitectura y componentes Object Services. Consultas. LINQ-to-Entities  Ej: recuperar las cuentas de un usuario (implementando Page-by-Page) using (MiniBankEntities context = new MiniBankEntities()) { List<Account> accounts = (from a in context.Account where a.usrId == userId orderby a.accId select a).Skip(startIndex).Take(count).ToList(); foreach (Account a in accounts) { Console.WriteLine(a.accId + ", " + a.balance); }
  • 39. Implementación de DAOs con Entity Framework  Siguiendo el enfoque visto en la primera parte de la asignatura, se ha diseñado un DAO genérico con las operaciones comunes a todas las clases persistentes:  Create, Find, Exists, Update, Remove  Cada entidad persistente tendrá su propio DAO, que extenderá el genérico para añadir operaciones propias  El DAO genérico se encuentra en el proyecto ModelUtil, utilizado por MiniBank y MiniPortal como .dll  La interfaz parametrizada del DAO genérico recibe 2 argumentos:  E, es la clase persistente para la que se implementará el DAO  PK, define el tipo del identificador de la clase persistente  Los métodos están definidos en base a esos parámetros y no están acoplados a ninguna tecnología de persistencia
  • 40. Implementación de DAOs con Entity Framework  Interfaz del DAO genérico public interface IGenericDao<E, PK> { void Create(E entity); /// <exception cref="InstanceNotFoundException"></exception> E Find(PK id); Boolean Exists(PK id); E Update(E entity); /// <exception cref="InstanceNotFoundException"></exception> void Remove(PK id); }
  • 41. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework public class GenericDaoEntityFramework<E, PK> : IGenericDao<E, PK> where E : IEntityWithKey { // entityClass is set in the constructor of this class private Type entityClass; // context must be set by means of Context property private ObjectContext context; private String entityContainerName; public GenericDaoEntityFramework() { this.entityClass = typeof(E); }
  • 42. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework [Dependency] public ObjectContext Context { set { context = value; entityContainerName = (context.MetadataWorkspace GetItems<EntityContainer>(DataSpace.CSpace))[0].Name; context.DefaultContainerName = entityContainerName; // Forces the load of the metadata context.MetadataWorkspace.LoadFromAssembly( entityClass.Assembly); } get { return context; } }
  • 43. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework public EntityKey CreateEntityKey(PK id) { EntityType entityType = (EntityType)context.MetadataWorkspace.GetType(entityClass.Name, entityClass.Namespace, DataSpace.CSpace); /* We assume that the DAO works only with single field primary * key classes */ String primaryKeyFieldName = ((EntityType)entityType).KeyMembers.First().ToString(); // Create the entityKey EntityKey entityKey = new EntityKey(entityContainerName + "." + entityClass.Name, new EntityKeyMember[] { return entityKey; }
  • 44. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework public void Create(E entity) { String entitySetName = entityContainerName + "." + entityClass.Name; context.AddObject(entitySetName, entity); context.SaveChanges(); context.AcceptAllChanges(); } /// <exception cref="InstanceNotFoundException"/> public E Find(PK id) { EntityKey entityKey = this.CreateEntityKey(id); try { E result = (E)context.GetObjectByKey(entityKey); return result; } catch (ObjectNotFoundException) { throw new InstanceNotFoundException(id, entityClass.FullName); } }
  • 45. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework public Boolean Exists(PK id) { Boolean objectFound = true; EntityKey entityKey = this.CreateEntityKey(id); try { object result = context.GetObjectByKey(entityKey); } catch (ObjectNotFoundException) { objectFound = false; } return objectFound; } public E Update(E entity) { // Last Updates are sent to database context.Refresh(RefreshMode.ClientWins, entity); context.SaveChanges(); context.AcceptAllChanges(); return (E)context.GetObjectByKey(entity.EntityKey); }
  • 46. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework /// <exception cref="InstanceNotFoundException"/> public void Remove(PK id) { E objectToRemove = default(E); try { // First we need to find the object objectToRemove = Find(id); context.DeleteObject(objectToRemove); context.SaveChanges(); context.AcceptAllChanges(); } catch (InstanceNotFoundException) { throw; }
  • 47. Implementación de DAOs con Entity Framework  Implementación del DAO genérico con Entity Framework catch (OptimisticConcurrencyException) { context.Refresh(RefreshMode.ClientWins, objectToRemove); context.DeleteObject(objectToRemove); context.SaveChanges(); context.AcceptAllChanges(); } catch (InvalidOperationException) { throw new InstanceNotFoundException(id, entityClass.FullName); } }
  • 48. Implementación de DAOs con Entity Framework  Para implementar la persistencia utilizando Entity Framework, el DAO necesita un objeto ObjectContext  Se asigna y recupera a través de la propiedad Context  Se utilizará inyección de dependencias para establecer el valor de la propiedad Context  Para implementar las operaciones podemos elegir EntitySQL o Linq-to- Entities (hemos visto ejemplos de ambos)
  • 49. Implementación de DAOs con Entity Framework  Ej.: MiniBank > AccountDao
  • 50. Implementación de DAOs con Entity Framework  Ej.: MiniBank > AccountOperationDao