SlideShare une entreprise Scribd logo
1  sur  48
LINQ et Entity Framework Sébastien Ros et Fabrice Marguerie Page     11 Février 2008
Qui sommes-nous ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Objectif ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Présentation Page  
Définition ,[object Object],[object Object],[object Object],Page  
Rappel Page     SQL DS Base de données relationnelle Application finale Structured Query Language Données structurées
Rappel Page     DAL Data Access Layer Appel de méthode SQL DS DS Get() SQL DS
Rappel Page     DAL Business Object BO Get() SQL DS
Rappel Page     DAL MSSQL, Oracle, MySQL, DB2, … DAL DAL BO Get() SQL DS
Rappel Page     DAL ORM OQL  BO Object-Relational Mapping Différents schémas possibles, Table Per Hierarchy, … Langage de requête objet et indépendant du schéma LINQ  BO Get() SQL DS
Composants d’un ORM Page     Dialectes MSSQL Oracle DB2 Modèle Logique Relationnel DataTable DataRow Object Services Session Configuration
Persistence Framework Page     Modèle Logique Relationnel Dialectes Object Services MSSQL Oracle DB2 Session Configuration … DataTable DataRow … … Modèle Conceptuel Entity Relationship
Définition (Mise à jour) ,[object Object],[object Object],[object Object],Page  
Composants Page     EntityData Reader IEnumerable<T> DBDataReader Entity SQL (eSQL) LINQ to Entities EntityClient Data Provider EDM Conceptual Schema Definition Language ( .csdl ) Store Schema Definition Language ( .ssdl ) Mapping Specification Language ( .msl ) Object Services ObjectContext ObjectQuery<T> ADO.NET Providers MS SQL Server Oracle MySQL DB2 SQL Stored Procs
Démonstration Développement avec ADO.NET Entity Framework Page  
Fonctionnalités d’un ORM Que demander de plus ? Page  
Connecteurs externes Page     ,[object Object]
Environnement distribué ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Héritage ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Interfaces Page     SELECT VALUE  n  FROM  INommable  AS  n Personne Animal INommable
Relations ,[object Object],[object Object],[object Object],Page     ,[object Object],Customer Order * Student Course * * Customer Order *
Génériques ,[object Object],[object Object],Page     public   class   Traduction <T> { public   string  Langue {  get ;  set ; } public  T Valeur {  get ;  set ; } public  T Traduction {  get ;  set ; } }   class   Personne { public   string  Nom {  get ;  set ; } public   Traduction < string > Titre {  get ;  set ; } }
Optimisation des requêtes ,[object Object],Page     Customer  customer = GetCustomerById( 'SAMJA' ); customer.ContactName =  &quot;Sami Jaber&quot; ; UpdateCustomer(customer); UPDATE [Customers]  SET [ContactName] = 'Sami Jaber'  WHERE [CustomerID] = 'SAMJA'
Contraintes imposées au modèle objet Page  
Démarches Page  
Outils d’industrialisation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Divers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Démonstration Comparaison pratique des différents outils Page  
Performances brutes Page  
LINQ et les ORM Page  
Rappels sur LINQ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Positionnement ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
LINQ to Entities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Optimisation des requêtes ,[object Object],[object Object],Page     var  query = CompiledQuery .Compile< Entities ,  DateTime ,  IQueryable < Order >>( (context, minOrderDate) =>  from  order  in  context.Orders where  order.OrderDate > minOrderDate orderby  order.OrderDate select  order); DateTime  date =  new   DateTime (2003, 3, 8); using  ( Enities  entities =  new   Entities ()) { IQueryable < Order > orders = query.Invoke(entities, date); }
Requêtes dynamiques Page  
Plusieurs solutions… ,[object Object],[object Object],[object Object],Page  
LINQ to Entities ,[object Object],Page     var  query = from  customer  in  objectContext.Customers where  customer.Orders.Any() select  customer; if  (sortingRequested) query = query.OrderBy(customer => customer.Name); if  (! String .IsNullOrEmpty(city)) query = query.Where(customer => customer.City == city);
ObjectQuery<T> ,[object Object],Page     String  sortProperty = comboSortOrder.SelectedText; ObjectQuery < Customer > customers = objectContext.Customers.OrderBy( &quot;it.&quot;  + sortProperty);
Entity SQL ,[object Object],[object Object],Page     String  query = &quot;SELECT VALUE c FROM Customers AS c&quot; ; if  (! String .IsNullOrEmpty(city)) query +=  String .Format( &quot; WHERE c.City == '{0}'&quot; , city); String  sortProperty = comboSortOrder.SelectedText; query +=  &quot; ORDER BY c.&quot;  + sortProperty;
Démonstration LINQ dans tous ses états Page  
LINQ, le JDO du .NET ,[object Object],[object Object],[object Object],[object Object],Page     Repository < Customer >.Find(c => c.Name =  &quot;Microsoft&quot; ); Repository < Customer > .Find() .OrderBy(c => c.City) .Take(10) .ToList(); CustomerRepository .GetByName( &quot;Microsoft&quot; );
Conclusion Page  
EF dans la sphère Microsoft ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Rappel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Annexes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Annexes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Annexes ,[object Object],[object Object],Page     Fabrice Marguerie Steve Eichert Jim Wooley 1er février 2008 Papier ou PDF 576 pages C# et VB Chapitres gratuits disponibles Code source complet disponible gratuitement Part 1 Getting started 1 Introducing LINQ 2 C# and VB.NET language enhancements 3 LINQ building blocks Part 2 Querying objects in memory 4 Getting familiar with LINQ to Objects 5 Beyond basic in-memory queries Part 3 Querying relational data 6 Getting started with LINQ to SQL 7 Peeking under the covers of LINQ to SQL 8 Advanced LINQ to SQL features Part 4 Manipulating XML 9 Introducing LINQ to XML 10 Query and transform XML with LINQ to XML 11 Common LINQ to XML scenarios Part 5 LINQing it all together 12 Extending LINQ 13 LINQ in every layer appendix: The standard query operators bonus chapter: Working with LINQ and DataSets
Questions ? Page  

Contenu connexe

Similaire à Linq et Entity framework

Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeMongoDB
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
Symposium2008 Open Source 08 02 2008
Symposium2008    Open Source   08 02 2008Symposium2008    Open Source   08 02 2008
Symposium2008 Open Source 08 02 2008juflo
 
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataDe A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataMicrosoft
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Ludovic ROLAND
 

Similaire à Linq et Entity framework (20)

Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
react-fr.pdf
react-fr.pdfreact-fr.pdf
react-fr.pdf
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
Symposium2008 Open Source 08 02 2008
Symposium2008    Open Source   08 02 2008Symposium2008    Open Source   08 02 2008
Symposium2008 Open Source 08 02 2008
 
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataDe A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Ado.net database access
Ado.net database accessAdo.net database access
Ado.net database access
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?
 

Plus de DNG Consulting

Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTDNG Consulting
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day DNG Consulting
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraDNG Consulting
 

Plus de DNG Consulting (7)

Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
 
Devoxx fr
Devoxx frDevoxx fr
Devoxx fr
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
 

Linq et Entity framework

Notes de l'éditeur

  1. Entreprise JavaBeans 3.0