Partager via


LINQ et ADO.NET

Aujourd’hui, de nombreux développeurs d’entreprises doivent utiliser deux langages de programmation (ou plus) : un langage de haut niveau pour la logique métier et les couches de présentation (comme Visual C# ou Visual Basic) et un langage de requête pour interagir avec la base de données (par exemple, Transact-SQL). Cela exige que le développeur soit compétent dans plusieurs langues pour être efficace et provoque également des incompatibilités linguistiques dans l’environnement de développement. Par exemple, une application qui utilise une API d’accès aux données pour exécuter une requête sur une base de données spécifie la requête en tant que littéral de chaîne à l’aide de guillemets. Cette chaîne de requête n’est pas lisible pour le compilateur et n’est pas vérifiée pour les erreurs, telles que la syntaxe non valide ou si les colonnes ou les lignes qu’il référence existent réellement. Il n'y a aucune vérification de type des paramètres de requête et aucune prise en charge IntelliSense.

Language-Integrated Query (LINQ) permet aux développeurs de former des requêtes définies dans leur code d’application, sans avoir à utiliser un langage de requête distinct. Vous pouvez écrire des requêtes LINQ sur différentes sources de données énumérables (c’est-à-dire une source de données qui implémente l’interface IEnumerable ), telles que des structures de données en mémoire, des documents XML, des bases de données SQL et DataSet des objets. Bien que ces sources de données énumérables soient implémentées de différentes façons, elles exposent toutes les mêmes constructions de syntaxe et de langage. Étant donné que les requêtes peuvent être formées dans le langage de programmation lui-même, vous n’avez pas besoin d’utiliser un autre langage de requête incorporé en tant que littéraux de chaîne qui ne peuvent pas être compris ou vérifiés par le compilateur. L’intégration de requêtes dans le langage de programmation permet également aux programmeurs Visual Studio d’être plus productifs en fournissant la vérification des types et de la syntaxe au moment de la compilation, et IntelliSense. Ces fonctionnalités réduisent la nécessité de déboguer des requêtes et de corriger les erreurs.

Le transfert de données de tables SQL dans des objets en mémoire est souvent fastidieux et sujette aux erreurs. Le fournisseur LINQ implémenté par LINQ to DataSet et LINQ to SQL convertit les données sources en collections d’objets basées sur IEnumerable. Le programmeur affiche toujours les données sous la forme d’une IEnumerable collection, à la fois lorsque vous interrogez et lorsque vous mettez à jour. La prise en charge complète de IntelliSense est fournie pour l'écriture de requêtes sur ces collections.

Il existe trois technologies ADO.NET Language-Integrated de requête (LINQ) distinctes : LINQ to DataSet, LINQ to SQL et LINQ to Entities. LINQ to DataSet fournit des requêtes plus riches et optimisées sur le DataSet, LINQ to SQL vous permet de interroger directement des schémas de base de données SQL Server, et LINQ to Entities vous permet de interroger un modèle de données d'entité.

Le diagramme suivant fournit une vue d’ensemble de la façon dont les technologies LINQ ADO.NET se rapportent aux langages de programmation de haut niveau et aux sources de données compatibles LINQ.

Vue d’ensemble de LINQ to ADO.NET

Pour plus d’informations sur LINQ, consultez Language Integrated Query (LINQ).

Les sections suivantes fournissent plus d’informations sur LINQ to DataSet, LINQ to SQL et LINQ to Entities.

LINQ to DataSet

DataSet est un élément clé du modèle de programmation déconnecté sur lequel ADO.NET est basé et il est largement utilisé. LINQ to DataSet permet aux développeurs de créer des fonctionnalités de requête plus riches en DataSet utilisant le même mécanisme de formulation de requête que celui disponible pour de nombreuses autres sources de données. Pour plus d’informations, consultez LINQ to DataSet.

LINQ to SQL

LINQ to SQL est un outil utile pour les développeurs qui ne nécessitent pas de mappage à un modèle conceptuel. En utilisant LINQ to SQL, vous pouvez utiliser le modèle de programmation LINQ directement sur le schéma de base de données existant. LINQ to SQL permet aux développeurs de générer des classes .NET Framework qui représentent des données. Au lieu de mapper à un modèle de données conceptuel, ces classes générées sont mappées directement aux tables de base de données, aux vues, aux procédures stockées et aux fonctions définies par l’utilisateur.

Avec LINQ to SQL, les développeurs peuvent écrire directement du code par rapport au modèle de stockage en utilisant le même modèle de programmation LINQ que dans les collections en mémoire et le DataSet, en plus d’autres sources de données telles que XML. Pour plus d’informations, consultez LINQ to SQL.

LINQ to Entities (LINQ pour les Entités)

La plupart des applications sont actuellement écrites sur des bases de données relationnelles. À un moment donné, ces applications devront interagir avec les données représentées dans un formulaire relationnel. Les schémas de base de données ne sont pas toujours idéaux pour la création d’applications, et les modèles conceptuels d’application ne sont pas identiques aux modèles logiques des bases de données. Le modèle de données d’entité est un modèle de données conceptuel qui peut être utilisé pour modéliser les données d’un domaine particulier afin que les applications puissent interagir avec des données en tant qu’objets. Pour plus d’informations, consultez ADO.NET Entity Framework.

Par le biais du modèle de données d’entité, les données relationnelles sont exposées en tant qu’objets dans l’environnement .NET. Cela rend la couche objet une cible idéale pour la prise en charge LINQ, ce qui permet aux développeurs de formuler des requêtes sur la base de données à partir du langage utilisé pour générer la logique métier. Cette fonctionnalité est appelée LINQ to Entities. Pour plus d’informations, consultez LINQ to Entities.

Voir aussi