La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Développement d’application avec base de données Semaine 2: Requête avec l’Entity Data Model Automne 2013.

Présentations similaires


Présentation au sujet: "Développement d’application avec base de données Semaine 2: Requête avec l’Entity Data Model Automne 2013."— Transcription de la présentation:

1 Développement d’application avec base de données Semaine 2: Requête avec l’Entity Data Model Automne 2013

2  Méthodes pour faire des requêtes  Premier exemple de requêtes…mais plus de questions que de réponses… Plan de présentation

3  Plusieurs méthodes disponibles pour faire des requêtes. Le choix va reposer sur un choix personnelle plus que sur une question de performance.  Méthodes utilisées  Linq To Entities  ObjectQuery  Parcourir une collection  Etc. Méthodes pour faire des requêtes

4  Query the Model, Not the Database  Laissons ce travail à ADO.NET et son provider. Méthodes pour faire des requêtes

5 Première requête -> Parcourir une collection

6  En fait!  Var contacts = context.Contacts; c’est ObjectSet contacts = context.Contacts; Type

7  Les classes suivantes sont générés automatiquement. Mais d’où viennent ces classes

8  Les propriétés de navigation nous permettent d’interroger les entités associés. Les propriétés de navigation

9  Linq var contacts = from c in context.Contacts where c.FirstName == "Robert" select c;  lambda : var contacts = context.Contacts.Where((c) => c.FirstName == "Robert").OrderBy((foo) => foo.LastName); Qui dit collection dit Linq/Lambda 

10  Pourquoi le la clause FROM est au début contrairement au SQL? Question de culture!

11  Ici, les propriétés de navigation nous simplifie vraiment la vie: from a in context.Addresses where a.Contact.AddDate > new System.DateTime(2009, 1, 1) orderby a.Contact.LastName select new {a, a.Contact.LastName}; Propriété de navigation avec Linq

12  Entity Framework’s Object Services qStr = "SELECT VALUE c FROM SampleEntities.Contacts AS c " + "WHERE ObjectQuery contacts = new ObjectQuery (qStr, context); contacts.Parameters.Add(new ObjectParameter("firstName", "Robert")); Une autre façon de faire une requête

13  Lorsqu’on fait une requête, seuls les éléments de la requête serons affectés au résultat de la requête.  Par exemple: var contacts= from c in context.Contacts select c;  Seul les contacts sont chargés à partir de la base de données, les données en liens ne sont pas chargé. Autrement la base de données serait toujours téléchargée… lazy loading

14  Le Lazyloading fait donc des requêtes constamment pour permettre au programeur d’avoir accès aux données.  Exemple: var contacts= from c in context.Contacts select c; foreach (var contact in contacts) { Console.WriteLine("{0} #Addresses: {1}", contact.LastName,contact.Addresses.Count()); } Ainsi, s’il y a 10 contacts, il y aura 11 requêtes de réalisées. Lazy Loading

15  Soit qu’on fait une requête complète. from c in context.Contacts.Include("Addresses") where c.LastName.StartsWith("J") select c;  Soit qu’on désactive le lazy loading essayer de filtrer les données qui seront chargées. Solution?

16 var context = new SampleEntities(); context.ContextOptions.LazyLoadingEnabled = false; var addresses = from a in context.Addresses select a ; foreach (var address in addresses) { if (address.CountryRegion != null) { if (address.CountryRegion.Trim() == "UK") { address.ContactReference.Load(); } Si on désactive le Lazy Loading

17  Nous avons vue trois différentes façon de faire une requête sur le MODÈLE.  Nous avons vue le Lazy Loading.  Maintenant, à votre tour de jouer. Conclusion


Télécharger ppt "Développement d’application avec base de données Semaine 2: Requête avec l’Entity Data Model Automne 2013."

Présentations similaires


Annonces Google