entity framework sonora.net – ernesto ibarra. temario que es entity framework y sus componentes? ...
TRANSCRIPT
![Page 1: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/1.jpg)
Entity FrameworkSonora.Net – Ernesto Ibarra
![Page 2: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/2.jpg)
Temario
Que es Entity Framework y sus componentes?
Que es un ORM?
Principales ORM del Mercado
Que es un EntityObject?
Que es un POCO Object?
Que es Linq?
Implementación Básica de Entity Framework
Ventajas y desventajas de usar Entity Framework
Consideraciones para Performance
Preguntas?
![Page 3: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/3.jpg)
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.
![Page 4: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/4.jpg)
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
![Page 5: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/5.jpg)
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)
![Page 6: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/6.jpg)
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
![Page 7: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/7.jpg)
Que es un Entity Object? Por default el Entity Data Model genera EntityObjects que son derivados
de entidades (tablas/vistas)
![Page 8: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/8.jpg)
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.
![Page 9: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/9.jpg)
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
![Page 10: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/10.jpg)
Acceso a datos con ADO.NET
![Page 11: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/11.jpg)
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();
![Page 12: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/12.jpg)
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.
![Page 13: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/13.jpg)
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.
![Page 14: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/14.jpg)
Estilos a seguir en Entity Framework
Code First
Model First
Database first
![Page 15: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/15.jpg)
Implementacion Basica de EF
Demostración
![Page 16: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/16.jpg)
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 };
![Page 17: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/17.jpg)
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();
![Page 18: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/18.jpg)
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)
![Page 19: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/19.jpg)
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):
![Page 20: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/20.jpg)
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
![Page 21: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/21.jpg)
Consideraciones para Performance Tabla por Tipo (TPT)
- Representa una relación tipo “is a” (herencia), como una relación tipo “has a” (Foreign key).
![Page 22: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/22.jpg)
Consideraciones para Performance Tabla por Clase Concreta (TPC)
- Descarga las relaciones de polimorfismo y herencia completamente desde el esquema SQL.
![Page 23: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/23.jpg)
Referencias:
ADO.NET Entity Framework:
http://msdn.microsoft.com/es-es/library/vstudio/bb399572%28v=vs.100%29.aspx
Entity Framework Tutorial:
http://www.entityframeworktutorial.net/EntityFramework4.3/Introduction.aspx
PluralSight Online Trainings:
http://pluralsight.com/training/Courses/TableOfContents/entity-framework5-getting-started
Entity framework:
Mostafa Darwiche
![Page 24: Entity Framework Sonora.Net – Ernesto Ibarra. Temario Que es Entity Framework y sus componentes? Que es un ORM? Principales ORM del Mercado Que](https://reader035.vdocumento.com/reader035/viewer/2022062323/5665b4371a28abb57c900f69/html5/thumbnails/24.jpg)