Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette procédure pas à pas fournit un scénario LINQ to SQL de bout en bout fondamental avec des complexités minimales. Vous allez créer une classe d’entité qui modélise la table Customers dans l’exemple de base de données Northwind. Vous allez ensuite créer une requête simple pour répertorier les clients situés à Londres.
Cette procédure pas à pas est orientée vers le code par sa conception pour vous aider à illustrer les concepts LINQ to SQL. Normalement, vous utiliseriez le Concepteur relationnel objet pour créer votre modèle objet.
Remarque
Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur Visual Studio dans les instructions suivantes. L’édition Visual Studio que vous avez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.
Cette procédure pas à pas a été écrite à l’aide des paramètres de développement Visual C#.
Conditions préalables
Cette procédure pas à pas utilise un dossier dédié (« c :\linqtest5 ») pour contenir des fichiers. Créez ce dossier avant de commencer la procédure pas à pas.
Cette procédure pas à pas requiert l'exemple de base de données Northwind. Si vous n’avez pas cette base de données sur votre ordinateur de développement, vous pouvez la télécharger à partir du site de téléchargement Microsoft. Pour obtenir des instructions, consultez Téléchargement d’exemples de bases de données. Après avoir téléchargé la base de données, copiez le fichier dans le dossier c :\linqtest5.
Aperçu
Cette procédure pas à pas se compose de six tâches principales :
Création d’une solution LINQ to SQL dans Visual Studio.
Mappage d’une classe à une table de base de données.
Concevoir des propriétés sur la classe pour représenter des colonnes de base de données.
Spécification de la connexion à la base de données Northwind.
Création d’une requête simple à exécuter sur la base de données.
Exécution de la requête et observation des résultats.
Création d’une solution LINQ to SQL
Dans cette première tâche, vous créez une solution Visual Studio qui contient les références nécessaires pour générer et exécuter un projet LINQ to SQL.
Pour créer une solution LINQ to SQL
Dans le menu Fichier Visual Studio, pointez sur Nouveau, puis cliquez sur Projet.
Dans le volet Types de projet de la boîte de dialogue Nouveau projet , cliquez sur Visual C#.
Dans le volet Modèles , cliquez sur Application console.
Dans la zone Nom , tapez LinqConsoleApp.
Dans la zone Emplacement , vérifiez où vous souhaitez stocker vos fichiers projet.
Cliquez sur OK.
Ajout de références et de directives LINQ
Cette procédure pas à pas utilise des assemblys qui peuvent ne pas être installés par défaut dans votre projet. Si System.Data.Linq n’est pas répertorié comme référence dans votre projet (développez le nœud Références dans l’Explorateur de solutions), ajoutez-le, comme expliqué dans les étapes suivantes.
Pour ajouter System.Data.Linq
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence.
Dans la boîte de dialogue Ajouter une référence , cliquez sur .NET, sur l’assembly System.Data.Linq, puis sur OK.
L'assembly est ajouté au projet.
Ajoutez les directives suivantes en haut de Program.cs :
using System.Data.Linq; using System.Data.Linq.Mapping;
Mappage d’une classe à une table de base de données
Dans cette étape, vous allez créer une classe et la mapper à une table de base de données. Une telle classe est appelée classe d’entité. Notez que le mappage est effectué en ajoutant simplement l’attribut TableAttribute . La Name propriété spécifie le nom de la table dans la base de données.
Pour créer une classe d’entité et la mapper à une table de base de données
Tapez ou collez le code suivant dans Program.cs immédiatement au-dessus de la déclaration de
Program
classe :[Table(Name = "Customers")] public class Customer { }
Création de propriétés sur la classe pour représenter des colonnes de base de données
Dans cette étape, vous effectuez plusieurs tâches.
Vous utilisez l’attribut ColumnAttribute pour désigner
CustomerID
etCity
propriétés sur la classe d’entité comme représentant des colonnes dans la table de base de données.Vous désignez la
CustomerID
propriété comme représentant une colonne de clé primaire dans la base de données.Vous désignez
_CustomerID
et_City
champs pour le stockage privé. LINQ to SQL peut ensuite stocker et récupérer des valeurs directement, au lieu d’utiliser des accesseurs publics qui peuvent inclure la logique métier.
Pour représenter les caractéristiques de deux colonnes de base de données
Tapez ou collez le code suivant dans Program.cs à l'intérieur des accolades pour la classe
Customer
.private string _CustomerID; [Column(IsPrimaryKey=true, Storage="_CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage="_City")] public string City { get { return this._City; } set { this._City=value; } }
Spécification de la connexion à la base de données Northwind
Dans cette étape, vous utilisez un DataContext objet pour établir une connexion entre vos structures de données basées sur le code et la base de données elle-même. Il DataContext s’agit du canal principal par lequel vous récupérez des objets de la base de données et envoyez des modifications.
Déclarez également un Table<Customer>
comme jouant le rôle de table typée logique pour vos requêtes sur la table Customers dans la base de données. Vous allez créer et exécuter ces requêtes dans les étapes ultérieures.
Pour spécifier la connexion de base de données
Tapez ou collez le code suivant dans la
Main
méthode.Notez que le
northwnd.mdf
fichier est supposé se trouver dans le dossier linqtest5. Pour plus d’informations, consultez la section Prérequis plus haut dans cette procédure pas à pas.// Use a connection string. DataContext db = new DataContext (@"c:\linqtest5\northwnd.mdf"); // Get a typed table to run queries. Table<Customer> Customers = db.GetTable<Customer>();
Création d’une requête simple
Dans cette étape, vous créez une requête pour rechercher les clients de la table Customers de base de données situées à Londres. Le code de requête de cette étape décrit simplement la requête. Il ne l'exécute pas. Cette approche est appelée exécution différée. Pour plus d’informations, consultez Introduction aux requêtes LINQ (C#).
Vous allez également produire une sortie de journal pour afficher les commandes SQL générées par LINQ to SQL. Cette fonctionnalité de journalisation (qui utilise Log) est utile pour le débogage et pour déterminer que les commandes envoyées à la base de données représentent précisément votre requête.
Pour créer une requête simple
Tapez ou collez le code suivant dans la
Main
méthode après laTable<Customer>
déclaration.// Attach the log to show generated SQL. db.Log = Console.Out; // Query for customers in London. IQueryable<Customer> custQuery = from cust in Customers where cust.City == "London" select cust;
Exécution de la requête
Dans cette étape, vous exécutez réellement la requête. Les expressions de requête que vous avez créées dans les étapes précédentes ne sont pas évaluées tant que les résultats ne sont pas nécessaires. Lorsque vous commencez l’itération foreach
, une commande SQL est exécutée sur la base de données et les objets sont matérialisés.
Pour exécuter la requête
Tapez ou collez le code suivant à la fin de la méthode (après la description de la
Main
requête).foreach (Customer cust in custQuery) { Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City); } // Prevent console window from closing. Console.ReadLine();
Appuyez sur F5 pour déboguer l’application.
Remarque
Si votre application génère une erreur d’exécution, consultez la section Résolution des problèmes de l’apprentissage par procédures pas à pas.
Les résultats de la requête dans la fenêtre de console doivent apparaître comme suit :
ID=AROUT, City=London
ID=BSBEV, City=London
ID=CONSH, City=London
ID=EASTC, City=London
ID=NORTS, City=London
ID=SEVES, City=London
Appuyez sur Entrée dans la fenêtre de console pour fermer l’application.
Étapes suivantes
La rubrique Procédure pas à pas : interrogation de relations (C#) est la suite de cette procédure pas à pas. La procédure pas à pas Interrogation de relations montre comment LINQ to SQL peut interroger des tables, comme les jointures dans une base de données relationnelle.
Si vous souhaitez suivre la procédure pas à pas Interrogation de relations, pensez à enregistrer la solution de la procédure que vous venez d'exécuter car elle est indispensable.