Requêtes LINQ to SQL
Vous définissez des requêtes LINQ to SQL en utilisant la même syntaxe que dans LINQ. La seule différence est que les objets référencés dans vos requêtes sont mappés aux éléments d'une base de données. Pour plus d’informations, consultez Introduction aux requêtes LINQ (C#).
LINQ to SQL traduit les requêtes que vous écrivez en requêtes SQL équivalentes et les envoie au serveur pour traitement. Plus spécifiquement, votre application utilise l’API LINQ to SQL pour demander l’exécution des requêtes. Le fournisseur LINQ to SQL transforme ensuite la requête en texte SQL et délègue l’exécution au fournisseur ADO. Le fournisseur ADO retourne des résultats de la requête en tant que DataReader
. Le fournisseur LINQ to SQL traduit les résultats ADO en une collection IQueryable d’objets utilisateur.
Notes
La plupart des méthodes et des opérateurs sur les types intégrés du .NET Framework ont des traductions directes en SQL. Ceux que LINQ ne peut pas traduire génèrent des exceptions à l’exécution. Pour plus d’informations, consultez Mappage des types SQL-CLR.
Le tableau suivant montre les similarités et les différences entre les éléments des requêtes LINQ et LINQ to SQL.
Élément | Requête LINQ | Requête LINQ to SQL |
---|---|---|
Type de retour de la variable locale qui contient la requête (pour les requêtes qui retournent des séquences) | Generic IEnumerable |
Generic IQueryable |
Spécification de la source de données | Utilise la clause From (Visual Basic) ou from (C#) |
Identique |
Filtrage | Utilise la clause Where /where |
Identique |
Regroupement | Utilise la clause Group…By /groupby |
Identique |
Sélection (projection) | Utilise la clause Select /select |
Identique |
Exécution différée / exécution immédiate | Consultez Présentation des requêtes LINQ (C#) | Identique |
Implémentation de jointures | Utilise la clause Join /join |
Peut utiliser la clause Join /join , mais utilise plus efficacement l’attribut AssociationAttribute. Pour plus d’informations, consultez Interrogation avec les relations. |
Exécution distante / exécution locale | Pour plus d’informations, consultez Exécution locale et distante. | |
Transmission en continu / interrogation mise en cache | Non applicable dans un scénario de mémoire locale |