1 / 24

Entity Framework

Entity Framework. Sonora.Net – Ernesto Ibarra. 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

livvy
Download Presentation

Entity Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Entity Framework Sonora.Net – Ernesto Ibarra

  2. Temario • QueesEntity Framework y suscomponentes? • Quees un ORM? • Principales ORM del Mercado • Quees un EntityObject? • Quees un POCO Object? • QueesLinq? • Implementación Básicade Entity Framework • Ventajas y desventajas de usar Entity Framework • Consideraciones para Performance • Preguntas?

  3. Quees Entity Framework? • Entity Framework (EF) es un ORM (object-relationalmapper) 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.

  4. 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.NetData Provider

  5. Quees un ORM? Object-Relational Mapping • Mapeo objeto-relacional(más conocido por su nombre en inglés, Object-Relationalmapping, o sus siglas O/RM, ORM, y O/R mapping) es una técnica de programación para convertir datos entre el sistema de tiposutilizado en un lenguaje de programaciónorientado 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)

  6. 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

  7. Quees un Entity Object? • Por default el Entity Data Model genera EntityObjectsque son derivados de entidades (tablas/vistas)

  8. Quees un POCO Object? • POCO (Plain Old CLR Object): - Las clases POCO esunaclase la cual no depende de ningunaclase base de un Framework especifico.

  9. QueesLinq? • 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

  10. Acceso a datos con ADO.NET

  11. Acceso a datos con Linq: • Fácil: List<Customer> customers = from c in Customers wherec.FirstName ==“Test” select c; • Rápido de codificar y legible: List<Customer> customers = dbContext.Customers.Where(c => c.FirstName == “Test”).ToList();

  12. 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. • Lazyloading.(Cargado de objetos relacionados sobre demanda) • Lambda expressions y extensionmethods.

  13. 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.

  14. Estilos a seguir en Entity Framework • Code First • Model First • Database first

  15. ImplementacionBasica de EF • Demostración

  16. Consideraciones para Performance • Múltiples EntityModels (múltiples contextos). • Desactivar el trackeo si no es necesario (Mejora el rendimiento): SubwayDBcontext = newSubwayDB(); context.Configuration.AutoDetectChangesEnabled = false; // Do bulk insert ....... // Change it back context.Configuration.AutoDetectChangesEnabled = true; • Usar SQL Projection: varusers = from u incontext.UserAccountswhereu.Active == true selectnew { FirstName = u.FirstName, LastName = u.LastName, Email = u.Email };

  17. Consideraciones para Performance • Usar el tipo de coleccion apropiado: IQueryable<UserAccount> IEnumerable<UserAccount> - Filtradesde la base de datos - Filtradesde el lado del cliente - SoportaLazy loading - No soporta Lazy loading. • Usar Queries compilados: • Aplicar a los Queries comunmenteutilizados para mejorar el rendimiento (Performance). • Usar Paginados de información del lado del servidor: intpageSize=10,startingPageIndex=2; varusers = context.UserAccounts.Take(pageSize).Skip(startingPageIndex * pageSize) .ToList();

  18. Consideraciones para Performance • Caching: - Caching Interno • Rápida ejecución estilo Micro-ORM estilo SqlQuery en base de datos y ExecuteStoreQuery (SP): varquery = 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 Eagerloading (Cuando seleccionar Lazyloading)

  19. 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 LinqQuery: - 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):

  20. 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

  21. Consideraciones para Performance • Tabla por Tipo (TPT) - Representa una relación tipo “is a” (herencia), como una relación tipo “has a” (Foreignkey).

  22. Consideraciones para Performance • Tabla por Clase Concreta (TPC) - Descarga las relaciones de polimorfismo y herencia completamente desde el esquema SQL.

  23. 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 • PluralSightOnline Trainings: http://pluralsight.com/training/Courses/TableOfContents/entity-framework5-getting-started • Entity framework: MostafaDarwiche

More Related