S4-PD1.pptx

LuisFerAguas 150 views 25 slides Mar 27, 2022
Slide 1
Slide 1 of 25
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25

About This Presentation

S4-PD1.pptx


Slide Content

Plataformas de Desarrollo 1 Tema: 2 Entity Framework Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft [email protected]

El momento en que quieres dejarlo es justo el momento en que tienes que seguir avanzando

Objetivo Adquirir los conceptos básicos relacionados con Visual Studio Reconocer las características de Visual Studio 2.2 Entity Framework Contenido

ODS 4.3 De aquí a 2030, asegurar el acceso igualitario de todos los hombres y las mujeres a una formación técnica, profesional y superior de calidad, incluida la enseñanza universitaria META

2.2 Entity Framework

Qué 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 M apeo 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: No hay cadenas mágicas como las que se pueden generar en sentencias SQL (Prevención de Inyección). Intellisense . Un desarrollo mas rápido. Autogeneración de objetos de dominio que pueden ser proyectos reusables. Lazy loading .(Cargado de objetos relacionados sobre demanda) Lambda expressions y extension methods .

Linq vs Native SQL Desventajas: Depuración ( Debugging ). Consultas complejas traen como resultado problemas de rendimiento. Sobrecarga al crear consultas. 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