Procédure pas à pas : Requête et modèle objet simples (Visual Basic)
Cette procédure pas à pas fournit un scénario LINQ to SQL complet de base avec une 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 mieux montrer les concepts de LINQ to SQL. Normalement, vous utiliseriez le Concepteur Objet Relationnel pour créer votre modèle objet.
Notes
Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués 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 Personnalisation de l’IDE.
Cette procédure pas à pas a été écrite à l'aide des paramètres de développement Visual Basic.
Prérequis
Les fichiers sont stockés dans un dossier dédié, c:\linqtest. Vous devez créer 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 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. Après avoir téléchargé la base de données, copiez le fichier dans le dossier c:\linqtest.
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, cliquez sur Nouveau projet.
Dans le volet Types de projets de la boîte de dialogue Nouveau projet, cliquez sur Visual Basic.
Dans le volet Modèles, cliquez sur Application console.
Dans la zone Nom, tapez LinqConsoleApp.
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 listé comme référence dans votre projet (cliquez sur Afficher tous les fichiers dans l’Explorateur de solutions et développez le nœud Références), 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.
Dans la boîte de dialogue Ajouter une référence, cliquez sur .NET, faites défiler et cliquez sur System.Windows.Forms, puis sur OK.
Cet assembly qui prend en charge le message dans la procédure pas à pas est ajouté au projet.
Ajoutez les directives suivantes au-dessus de
Module1
:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
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 immédiatement le code suivant dans Module1.vb au-dessus de
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
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
etCity
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 Module1.vb juste avant
End Class
:Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
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(Of 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
Sub Main
:Notez que le fichier
northwnd.mdf
est censé se trouver dans le dossier linqtest. Pour plus d'informations, consultez la section Composants requis au début de cette procédure pas à pas.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of 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 allez aussi produire une sortie de journal pour montrer les commandes SQL générées par LINQ to SQL. Cette fonctionnalité 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
Sub Main
après la déclarationTable(Of Customer)
:' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
Exécution de la requête
Dans cette étape, vous allez exécuter 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 For Each
, 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
Sub Main
(après la description de la requête) :' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
Appuyez sur F5 pour déboguer l'application.
Notes
Si votre application génère une erreur d’exécution, consultez la section Résolution des problèmes de Apprentissage par les procédures pas à pas.
Le message affiche une liste de six clients. La fenêtre de console affiche le code SQL généré.
Cliquez sur OK pour fermer la boîte de message.
L'application se ferme.
Dans le menu Fichier , cliquez sur Enregistrer tout.
Vous aurez besoin de cette application si vous passez à la procédure pas à pas suivante.
Étapes suivantes
La rubrique Procédure pas à pas : Interrogation avec des relations (Visual Basic) est la suite de cette procédure pas à pas. La procédure pas à pas Interrogation avec des relations montre comment LINQ to SQL peut interroger des tables, de façon similaire aux 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.