Sonora.Net – Ernesto Ibarra

Slides:



Advertisements
Presentaciones similares
Conexión a Bases de Datos
Advertisements

Las aplicaciones requieren datos persistentes
Mónica Acosta Yeison Ceballos Carlos Rodallega
Framework de.Net Infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican el desarrollo de aplicaciones Entorno.
Conceptos fundamentales de ADO.NET
3/24/2017 3:58 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
3/24/2017 4:02 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Red Social: “Un millón de Amigos”.
Introducción a HIBERNATE
integridad referencial
Tecnologías para desarrollo de aplicaciones web. Un caso de uso
Mario Cortés Flores Consultor SharePoint en Renacimiento Coordinador SUGES Coautor de:
Arturo López Consultor de tecnología
Microsoft SQL Server 2008 – SQL Server Integration Services
Código: HOL-SQL30. Dos tipos de datos nuevos de tipo Spatial: - Geography (superficie elipsoidal) - Geometry (superficie plana) Tipos de datos en 2.
Programación Visual de Sistemas
Acceso a Datos avanzado
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz.
Arquitectura de la Aplicación
Lenguaje de consulta de Hibernate
Entity Framework Desarrollador vs. DBA Enrique Puig Nouselles
ORCAS La nueva generación de Visual Studio Octavio Hernández Plain Concepts Developer Advisor David Salgado Microsoft División.
85 motivos* para Ruby on Rails
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
Características Técnicas
Introducción arquitectura base de datos Microsoft SQL Server 2000/2005
JAVA Persistence API (JPA)
Bienvenidos.
Introducción a ASP.NET.
BASES DE DATOS ORIENTADAS A OBJETO
Interacción Persona Ordenador
Módulo 14 Programación para DBA. TEMARIO Programación y DBAProgramación y DBA.NET Framework.NET Framework Arquitectura ADO.NETArquitectura ADO.NET.NET.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Abstracción de los datos y Orientación a Objeto Clase 13.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
Acceso a datos con Sharepoint
UOC José Mª Casablanca González. Índice Introducción Objetivos generales y específicos Problema y posibles soluciones Características y definición.
Subconsultas Avanzadas
Sintaxis de C# (Declaraciones y Tipos)
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Lenguajes utilizados para aplicaciones distribuidas
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Bases de Datos Orientadas a Objetos (BDOO)
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
ScrumMe Integrantes: Gabriel Centurión Maximiliano Félix.
INSTITUTO TECNOLÓGICO DEL VALLE DEL GUADIANA
Lenguajes de programación Web
© 2010 DUOC Sede Antonio Varas. Todos los Derechos Reservados.
Language Integrated Query Johnny Halife Microsoft Student Ambassador Southworks.
Structured Query Language MySQL Sistema de gestión de bases de datos SQL Open Source más popular Lo desarrolla, distribuye y soporta.
Lenguajes de programación para la web Lenguaje html Lenguaje java script Es un lenguaje estático para el desarrollo de sitios web Ventajas: Sencillo que.
Frameworks de Persistencia Java Prof. Ing. Esteban Ramírez
Especialista en Business Intelligence Conceptos fundamentales Microsoft SQL Server 2008 R2 Suscribase a o escríbanos a
LINQ TO AMAZON IN SILVERLIGHT Presentación del Producto.
Introducción a ataques de tipo inyección: Inyección SQL
Bienvenidos. Desarrollo de Aplicaciones I Lic. Alfonso Felipe Lima Cortés
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Cristian Fonnegra Marin
Nombre: Germania Ruiz UNIVERSIDAD TECNOLOGICA AMERICA.
LINQ (Language-Integrated Query) Gabriel Espinoza Erices 2012 – 03 – 15.
Programación orientada a objetos Capítulo 5 Comportamiento más sofisticado.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
Clases “ Es una Abstracción de un elemento del mundo real ”
Stored Procedures vs. Programación Tradicional
ACCESO A DATOS EN ASP.NET Controles de origen de datos Controles enlazados a datos.
SYMFONY Información del Framework. Síntesis de Symfony  Es un framework diseñado para optimizar el desarrollo de aplicaciones web creado con PHP5. 
Transcripción de la presentación:

Sonora.Net – Ernesto Ibarra 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 Ventajas y desventajas de usar Entity Framework Consideraciones para Performance Preguntas?

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

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

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

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

Implementacion Basica de EF Demostración

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.

Referencias: ADO.NET Entity Framework: Entity Framework Tutorial: 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