Procédure pas à pas : requête et modèle objet simples (C#) (LINQ to SQL)
Cette procédure pas à pas fournit un scénario LINQ to SQL complet essentiel de complexité minimale. Vous allez créer une classe d'entité qui modélise la table Customers dans l'exemple de base de données Northwind. Vous créerez ensuite une requête simple pour répertorier les clients localisés à Londres.
Cette procédure pas à pas est orientée code en termes de conception pour permettre l'affichage des concepts LINQ to SQL. En temps normal, vous utilisez le Concepteur Objet/Relationnel pour créer votre modèle objet. Pour plus d'informations, consultez Concepteur Objet/Relationnel (Concepteur O/R) et Concepteur Objet/Relationnel (Concepteur O/R) et Concepteur Objet/Relationnel (Concepteur O/R).
Remarque |
---|
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio. |
Cette procédure pas à pas a été écrite à l'aide des paramètres de développement Visual C#.
Composants requis
Les fichiers sont stockés dans un dossier dédié, c:\linqtest5. Vous devez créer ce dossier avant de commencer la procédure.
Cette procédure pas à pas requiert l'exemple de base de données Northwind. Si cette base de données n'est pas disponible 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 (LINQ to SQL). Après avoir téléchargé la base de données, copiez le fichier dans le dossier c:\linqtest5.
Vue d'ensemble
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.
Désignation de 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
Au cours de cette première tâche, vous allez créer 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 de Visual Studio pointez sur Nouveau, puis cliquez sur Projet.
Dans le volet Types de projets 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 ne sont pas nécessairement installés par défaut dans votre projet. Si System.Data.Linq n'est pas répertorié comme une référence dans votre projet (développez le nœud Références dans l'Explorateur de solutions), ajoutez-le comme indiqué 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
Au cours de cette étape, vous allez créer une classe et la mapper à une table de base de données. Ce type de classe est appelé classe d'entité. Notez que le mappage s'effectue simplement en ajoutant l'attribut TableAttribute. La propriété Name 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 juste au-dessus de la déclaration de classe Program :
[Table(Name = "Customers")] public class Customer { }
Désignation de propriétés sur la classe pour représenter des colonnes de base de données
Au cours de cette étape, vous allez effectuer plusieurs tâches.
Utilisez l'attribut ColumnAttribute pour désigner les propriétés CustomerID et City sur la classe d'entité comme représentant des colonnes de la table de base de données.
Désignez la propriété CustomerID comme représentant une colonne de clé primaire dans la base de données.
Désignez les champs _CustomerID et _City pour le stockage privé. LINQ to SQL peut ensuite stocker et récupérer directement des valeurs, 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
Au cours de cette étape, vous allez utiliser un objet DataContext pour établir une connexion entre vos structures de données basées sur du code et la base de données elle-même. Le DataContext est le canal principal par le biais duquel vous récupérez des objets de la base de données et soumettez 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. La création et l'exécution de ces requêtes s'effectueront dans des étapes ultérieures.
Pour spécifier la connexion de base de données
Tapez ou collez le code suivant dans la méthode Main :
Notez que le fichier northwnd.mdf est censé se trouver dans le dossier linqtest5. Pour plus d'informations, consultez la section Composants requis au début de 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
Au cours de cette étape, vous allez créer une requête pour rechercher les clients localisés à Londres dans la table Customers de la base de données. Le code de requête de cette étape décrit simplement la requête. Il ne l'exécute pas. Cette approche est connue sous le nom d'exécution différée. Pour plus d'informations, consultez Introduction aux requêtes LINQ (C#).
Vous produirez également une sortie de journal pour afficher les commandes SQL générées par LINQ to SQL. Cette fonction d'enregistrement (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 méthode Main après la déclaration Table<Customer> :
// 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
Cette étape est consacrée à l'exécution de la requête. Les expressions de requête créées au cours des é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 Main (après la description de la 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 Dépannage de Apprentissage par les procédures pas à pas (LINQ to SQL).
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#) (LINQ to SQL) continue où cette procédure pas à pas se termine. 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.