SlideShare una empresa de Scribd logo
1 de 25
Plataformas de
Desarrollo 1
Tema: 2 Entity Framework
Docente: Mg. Luis Fernando Aguas B
El momento en que quieres dejarlo es justo el
momento en que tienes que seguir avanzando
Objetivo
1. Adquirir los conceptos
básicos relacionados con
Visual Studio
2. Reconocer las
características de Visual
Studio
● 2.2 Entity Framework
Contenido
Objetivos de Desarrollo Sostenible
2.2 Entity Framework
Que es Entity Framework?
● Entity Framework (EF) es un ORM
(object-relational mapper) que
permite a los desarrolladores en
.NET trabajar con datos
relacionales usando objetos
específicos del dominio. Elimina la
necesidad de escribir la mayoría de
código de acceso a datos. Es un
mecanismo automatizado para
acceder y consultar datos en una
base de datos y trabajar con los
resultados.
Componentes de Entity Framework
● EDM (Entity Data Model)
● Conceptual Model
● Storage Model
● Mapping
● LINQ to Entities
● Entity SQL
● Object Service
● Entity Client Data Provider
● ADO.Net Data Provider
Que es un ORM? Object-Relational Mapping
● Mapeo objeto-relacional (más conocido por su nombre en inglés, Object-
Relational mapping, o sus siglas O/RM, ORM, y O/R mapping) es una técnica
de programación para convertir datos entre el sistema de tipos utilizado en un
lenguaje de programación orientado a objetos y la utilización de una base de
datos relacional, utilizando un motor de persistencia.
● Nota: En la práctica esto crea una base de datos orientada a objetos virtual,
sobre la base de datos relacional. Esto posibilita el uso de las características
propias de la orientación a objetos (básicamente herencia y polimorfismo)
Principales ORM del Mercado
● Java: EJB, Hibernate, Athena Framework, Java Data Objects.
● .NET: ADO.NET Entity Framework, Linq to SQL, nHibernate,
DataObjects.NET.
● PHP: CakePHP, FuelPHP, Qcodo, Readbean, Zend Framework
● Phyton: Django, SQLObject, Storm, Tryton.
● Ruby: ActiveRecord, Datamapper, iBATIS
Que es un Entity Object?
● Por default el Entity Data
Model genera EntityObjects
que son derivados de
entidades (tablas/vistas)
Que es un POCO Object?
● POCO (Plain Old CLR Object):
- Las clases POCO es una clase la cual no depende de ninguna clase base de un Framework
especifico.
Que es Linq?
● Definición: Languaje Integrated Query
● Linq simplemente es una expresión tipo Query en
nuestro código, similar a un Query de SQL en nuestra
base de datos.
● Es aplicable sobre colecciones:
○ Listas
○ Arreglos
○ XML
○ Tablas de base de datos
Acceso a datos con ADO.NET
Acceso a datos con Linq:
● Fácil:
List<Customer> customers = from c in Customers
where c.FirstName == “Test”
select c;
● Rápido de codificar y legible:
List<Customer> customers = dbContext.Customers.Where(c => c.FirstName
== “Test”).ToList();
Linq vs Native SQL
● Ventajas:
1. No hay cadenas mágicas como las que se pueden generar en sentencias
SQL (Prevención de Inyección).
2. Intellisense.
3. Un desarrollo mas rápido.
4. Autogeneración de objetos de dominio que pueden ser proyectos reusables.
5. Lazy loading.(Cargado de objetos relacionados sobre demanda)
6. Lambda expressions y extension methods.
Linq vs Native SQL
● Desventajas:
1. Depuración (Debugging).
2. Consultas complejas traen como resultado problemas de rendimiento.
3. Sobrecarga al crear consultas.
4. Los Índices de base de datos no son usados adecuadamente.
Estilos a seguir en Entity Framework
● Code First
● Model First
● Database first
Consideraciones para Performance
● Múltiples Entity Models (múltiples contextos).
● Desactivar el trackeo si no es necesario (Mejora el rendimiento):
SubwayDB context = new SubwayDB(); context.Configuration.AutoDetectChangesEnabled = false;
// Do bulk insert ....... // Change it back context.Configuration.AutoDetectChangesEnabled = true;
● Usar SQL Projection:
var users = from u in context.UserAccounts where u.Active == true
select new { FirstName = u.FirstName, LastName = u.LastName, Email = u.Email };
Consideraciones para Performance
● Usar el tipo de coleccion apropiado:
IQueryable<UserAccount> IEnumerable<UserAccount>
- Filtra desde la base de datos - Filtra desde el lado del cliente
- Soporta Lazy loading - No soporta Lazy loading.
● Usar Queries compilados:
- Aplicar a los Queries comunmente utilizados para mejorar el rendimiento (Performance).
● Usar Paginados de información del lado del servidor:
int pageSize=10,startingPageIndex=2;
var users = context.UserAccounts.Take(pageSize).Skip(startingPageIndex * pageSize) .ToList();
Consideraciones para Performance
● Caching:
- Caching Interno
● Rápida ejecución estilo Micro-ORM estilo Sql Query en base de datos y
ExecuteStoreQuery (SP):
var query = ContextManager.CurrentContext.Database.SqlQuery<TransactionObjectList>( "EXEC sp_GetTransactionList @RoleID, @UserID, @RegionID,
@Lookup, @TransactionsStatus, @DateFrom, @DateTo, " + "@AmountFrom, @AmountTo, @DeliveryMethod, @AdminMenu, @StoreNumber, @HasDiscount,
@CateringMenu, " + "@DevelopmentStores, @WithCustomerAbuse, @WithTotalPrice, @minGrandTotal, @maxGrandTotal, @EnteredToSubshop, " +
"@ExcludeZeroBalance, @StoreIsRemoved, @marketID, @Page,@PageSize,@sortdir,@sort", sqlparameters);
● Lazy Vs Eager loading (Cuando seleccionar Lazy loading)
Consideraciones para Performance
● Evitar el uso del método Contains
En Linq, el método Contains es usado para verificar la existencia de un valor. Este es convertido a una sentencia
“WHERE IN” en SQL, lo cual causa una degradación del performance.
● Depuración y Optimización de Linq Query:
- Usar SQL Profiler
- Dividir la consulta a múltiples consultas (múltiples sentencias JOIN a tablas)
● Estrategias para manejo de Herencia en Entity Framework:
- Jerarquía por Tabla (TPH)
- Tabla por Tipo (TPT)
- Tabla por Clase concreta (TPC):
Consideraciones para Performance
● Jerarquía por Tabla (TPH)
- Permite polimorfismo por de-normalización de esquema de SQL y utiliza una
columna como tipo discriminador que contiene esta información.
Discriminador = 3 Tipos
Consideraciones para Performance
● Tabla por Tipo (TPT)
- Representa una relación tipo “is a” (herencia), como una relación tipo “has a” (Foreign
key).
Consideraciones para Performance
● Tabla por Clase Concreta (TPC)
- Descarga las relaciones de polimorfismo y herencia completamente desde el esquema SQL.
Gracias
Responsabilidad con pensamiento positivo

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Oracle Database 11g enterprise
Oracle Database 11g enterpriseOracle Database 11g enterprise
Oracle Database 11g enterprise
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Productividad con oracle sql developer y data modeler
Productividad con oracle sql developer y data modelerProductividad con oracle sql developer y data modeler
Productividad con oracle sql developer y data modeler
 
13-Unidad 2. Operaciones Linq
 13-Unidad 2. Operaciones Linq 13-Unidad 2. Operaciones Linq
13-Unidad 2. Operaciones Linq
 
12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
12-Unidad 2: Aplicaciones Windows Forms-2.3 Ado-net
 
03 acceso a datos con ado net
03 acceso a datos con ado net03 acceso a datos con ado net
03 acceso a datos con ado net
 
El ddl neil tello
El ddl neil telloEl ddl neil tello
El ddl neil tello
 
Objeto ado.net
Objeto ado.netObjeto ado.net
Objeto ado.net
 
Informe conecta base_datos_diego_rangel
Informe conecta base_datos_diego_rangelInforme conecta base_datos_diego_rangel
Informe conecta base_datos_diego_rangel
 
TUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENOTUTORIAL DE ADO.NET MUY BUENO
TUTORIAL DE ADO.NET MUY BUENO
 
Programación con linq
Programación con linqProgramación con linq
Programación con linq
 
Formularios y $ post en PHP
Formularios y $ post en PHPFormularios y $ post en PHP
Formularios y $ post en PHP
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
Ado.net
Ado.netAdo.net
Ado.net
 
Desarrollo de aplicación bases de datos
Desarrollo de aplicación bases de datosDesarrollo de aplicación bases de datos
Desarrollo de aplicación bases de datos
 
Desarrollo de aplicación
Desarrollo de aplicaciónDesarrollo de aplicación
Desarrollo de aplicación
 
Ado.Net
Ado.NetAdo.Net
Ado.Net
 
Ado.net
Ado.netAdo.net
Ado.net
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 

Similar a EF-Conceptos-básicos-Entity-Framework

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
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxEddyJavierLogrooLen
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleMario Cortés Flores
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxcarrilloja98
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 

Similar a EF-Conceptos-básicos-Entity-Framework (20)

S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 
S8-DAW-2022S1.pptx
S8-DAW-2022S1.pptxS8-DAW-2022S1.pptx
S8-DAW-2022S1.pptx
 
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
 
3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño
 
2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptx
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycle
 
spring
springspring
spring
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
Jdbc
JdbcJdbc
Jdbc
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptx
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 

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

Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
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
 

Último (20)

Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
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.
 

EF-Conceptos-básicos-Entity-Framework

  • 1. Plataformas de Desarrollo 1 Tema: 2 Entity Framework Docente: Mg. Luis Fernando Aguas B
  • 2. El momento en que quieres dejarlo es justo el momento en que tienes que seguir avanzando
  • 3. Objetivo 1. Adquirir los conceptos básicos relacionados con Visual Studio 2. Reconocer las características de Visual Studio ● 2.2 Entity Framework Contenido
  • 6. Que es Entity Framework? ● Entity Framework (EF) es un ORM (object-relational mapper) que permite a los desarrolladores en .NET trabajar con datos relacionales usando objetos específicos del dominio. Elimina la necesidad de escribir la mayoría de código de acceso a datos. Es un mecanismo automatizado para acceder y consultar datos en una base de datos y trabajar con los resultados.
  • 7. Componentes de Entity Framework ● EDM (Entity Data Model) ● Conceptual Model ● Storage Model ● Mapping ● LINQ to Entities ● Entity SQL ● Object Service ● Entity Client Data Provider ● ADO.Net Data Provider
  • 8. Que es un ORM? Object-Relational Mapping ● Mapeo objeto-relacional (más conocido por su nombre en inglés, Object- Relational mapping, o sus siglas O/RM, ORM, y O/R mapping) es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y la utilización de una base de datos relacional, utilizando un motor de persistencia. ● Nota: En la práctica esto crea una base de datos orientada a objetos virtual, sobre la base de datos relacional. Esto posibilita el uso de las características propias de la orientación a objetos (básicamente herencia y polimorfismo)
  • 9. Principales ORM del Mercado ● Java: EJB, Hibernate, Athena Framework, Java Data Objects. ● .NET: ADO.NET Entity Framework, Linq to SQL, nHibernate, DataObjects.NET. ● PHP: CakePHP, FuelPHP, Qcodo, Readbean, Zend Framework ● Phyton: Django, SQLObject, Storm, Tryton. ● Ruby: ActiveRecord, Datamapper, iBATIS
  • 10. Que es un Entity Object? ● Por default el Entity Data Model genera EntityObjects que son derivados de entidades (tablas/vistas)
  • 11. Que es un POCO Object? ● POCO (Plain Old CLR Object): - Las clases POCO es una clase la cual no depende de ninguna clase base de un Framework especifico.
  • 12. Que es Linq? ● Definición: Languaje Integrated Query ● Linq simplemente es una expresión tipo Query en nuestro código, similar a un Query de SQL en nuestra base de datos. ● Es aplicable sobre colecciones: ○ Listas ○ Arreglos ○ XML ○ Tablas de base de datos
  • 13. Acceso a datos con ADO.NET
  • 14. Acceso a datos con Linq: ● Fácil: List<Customer> customers = from c in Customers where c.FirstName == “Test” select c; ● Rápido de codificar y legible: List<Customer> customers = dbContext.Customers.Where(c => c.FirstName == “Test”).ToList();
  • 15. Linq vs Native SQL ● Ventajas: 1. No hay cadenas mágicas como las que se pueden generar en sentencias SQL (Prevención de Inyección). 2. Intellisense. 3. Un desarrollo mas rápido. 4. Autogeneración de objetos de dominio que pueden ser proyectos reusables. 5. Lazy loading.(Cargado de objetos relacionados sobre demanda) 6. Lambda expressions y extension methods.
  • 16. Linq vs Native SQL ● Desventajas: 1. Depuración (Debugging). 2. Consultas complejas traen como resultado problemas de rendimiento. 3. Sobrecarga al crear consultas. 4. Los Índices de base de datos no son usados adecuadamente.
  • 17. Estilos a seguir en Entity Framework ● Code First ● Model First ● Database first
  • 18. Consideraciones para Performance ● Múltiples Entity Models (múltiples contextos). ● Desactivar el trackeo si no es necesario (Mejora el rendimiento): SubwayDB context = new SubwayDB(); context.Configuration.AutoDetectChangesEnabled = false; // Do bulk insert ....... // Change it back context.Configuration.AutoDetectChangesEnabled = true; ● Usar SQL Projection: var users = from u in context.UserAccounts where u.Active == true select new { FirstName = u.FirstName, LastName = u.LastName, Email = u.Email };
  • 19. Consideraciones para Performance ● Usar el tipo de coleccion apropiado: IQueryable<UserAccount> IEnumerable<UserAccount> - Filtra desde la base de datos - Filtra desde el lado del cliente - Soporta Lazy loading - No soporta Lazy loading. ● Usar Queries compilados: - Aplicar a los Queries comunmente utilizados para mejorar el rendimiento (Performance). ● Usar Paginados de información del lado del servidor: int pageSize=10,startingPageIndex=2; var users = context.UserAccounts.Take(pageSize).Skip(startingPageIndex * pageSize) .ToList();
  • 20. Consideraciones para Performance ● Caching: - Caching Interno ● Rápida ejecución estilo Micro-ORM estilo Sql Query en base de datos y ExecuteStoreQuery (SP): var query = ContextManager.CurrentContext.Database.SqlQuery<TransactionObjectList>( "EXEC sp_GetTransactionList @RoleID, @UserID, @RegionID, @Lookup, @TransactionsStatus, @DateFrom, @DateTo, " + "@AmountFrom, @AmountTo, @DeliveryMethod, @AdminMenu, @StoreNumber, @HasDiscount, @CateringMenu, " + "@DevelopmentStores, @WithCustomerAbuse, @WithTotalPrice, @minGrandTotal, @maxGrandTotal, @EnteredToSubshop, " + "@ExcludeZeroBalance, @StoreIsRemoved, @marketID, @Page,@PageSize,@sortdir,@sort", sqlparameters); ● Lazy Vs Eager loading (Cuando seleccionar Lazy loading)
  • 21. Consideraciones para Performance ● Evitar el uso del método Contains En Linq, el método Contains es usado para verificar la existencia de un valor. Este es convertido a una sentencia “WHERE IN” en SQL, lo cual causa una degradación del performance. ● Depuración y Optimización de Linq Query: - Usar SQL Profiler - Dividir la consulta a múltiples consultas (múltiples sentencias JOIN a tablas) ● Estrategias para manejo de Herencia en Entity Framework: - Jerarquía por Tabla (TPH) - Tabla por Tipo (TPT) - Tabla por Clase concreta (TPC):
  • 22. Consideraciones para Performance ● Jerarquía por Tabla (TPH) - Permite polimorfismo por de-normalización de esquema de SQL y utiliza una columna como tipo discriminador que contiene esta información. Discriminador = 3 Tipos
  • 23. Consideraciones para Performance ● Tabla por Tipo (TPT) - Representa una relación tipo “is a” (herencia), como una relación tipo “has a” (Foreign key).
  • 24. Consideraciones para Performance ● Tabla por Clase Concreta (TPC) - Descarga las relaciones de polimorfismo y herencia completamente desde el esquema SQL.

Notas del editor

  1. EDM (Entity Data Model): EDM consist three main parts- Conceptual model, Mapping and Storage model.   Conceptual Model: Conceptual model is your model classes and their relationships. This will be independent from your database table design.   Storage Model: Storage model is your database design model which includes tables, views, stored procedures and their relationships and keys.   Mapping: Mapping consist information about how your conceptual model is mapped to storage model.   LINQ to Entities: LINQ to Entities is query language used to write queries against the object model. It returns entities which are defined in the conceptual model. You can use your LINQ skills here.   Entity SQL: Entity SQL is again a query language same as LINQ to Entities. However it is little more difficult than L2E and also developer need to learn it separately.   Object Service: Object service is a main entry point for accessing data from database and to return it back. Object service is responsible for materialization which is process of converting data returned from entity client data provider (next layer) to an entity object structure.   Entity Client Data Provider: The main responsibility of this layer is to convert L2E or Entity SQL queries into SQL query which is understood by underlying database. It communicates with ADO.Net data provider which in turn sends or retrieves data from database.   ADO.Net Data Provider: This layer communicates with database using standard ADO.Net.
  2. EntityObject: By default, the ADO.NET Entity Data Model tools generate EntityObject derived entities. If you check entities created in previous step, it is of this type. When you work with EntityObject derived types, the object context manages the relationships between your objects, tracks changes as they occur, and supports lazy loading in the most efficient manner. However, the EntityObject derived types have strong dependency on the Entity Framework. If you are working with architectures that require persistence ignorance (for example, test- driven development or domain-driven development) or you have existing domain classes, consider using POCO or POCO proxies.
  3. POCO (Plain Old CLR Object): POCO class is the class which doesn’t depend on any framework specific base class. It is like any other normal .net class that is why it is called “Plain Old CLR Objects”. The Entity Framework 4.0 enables you to use existing .net classes together with the data model without making any modifications to the existing .net classes. These POCO entities (also known as persistence-ignorant objects) support most of the same LINQ queries as EntityObject derived entities .
  4. Code First: In the Code First approach, you avoid working with visual model designer (EDMX) completely. You write your POCO classes first and then create database from these POCO classes. Developers who follow the path of Domain-Driven Design (DDD) principles prefer to begin by coding their classes first and then generating the database required to persist their data.   One important thing to understand is that there are two new types introduced for Code First approach, DbContext and DbSet. DbContext is a simplified alternative to ObjectContext and is the primary object for interacting with a database using a specific model. DbSet(Of TEntity) is a simplified alternative to ObjectSet(Of TEntity) and is used to perform CRUD operations against a specific type from the model in Code First approach. Please visit EF Code-First Tutorial to learn code first in detail. Model First: In Model First approach, you create Entities, relationships, and inheritance hierarchies directly on the design surface of EDMX. So in Model First approach, when you add ADO.NET Entity Data Model, you should select ‘Empty Model’ instead of ‘Generate from database’.