Partager via


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

  1. Dans le menu Fichier, cliquez sur Nouveau projet.

  2. Dans le volet Types de projets de la boîte de dialogue Nouveau projet, cliquez sur Visual Basic.

  3. Dans le volet Modèles, cliquez sur Application console.

  4. Dans la zone Nom, tapez LinqConsoleApp.

  5. 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

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence.

  2. 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.

  3. 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.

  4. 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 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 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éclaration Table(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

  1. 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)
    
  2. 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é.

  3. Cliquez sur OK pour fermer la boîte de message.

    L'application se ferme.

  4. 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.

Voir aussi