Procédure pas à pas : Utilisation de procédures stockées uniquement (C#)

Cette procédure pas à pas fournit un scénario LINQ to SQL de base de bout en bout pour accéder aux données en exécutant seulement des procédures stockées. Cette approche est souvent utilisée par les administrateurs de base de données pour limiter les moyens d'accès au magasin de données.

Notes

Vous pouvez aussi utiliser des procédures stockées dans les applications LINQ to SQL pour remplacer le comportement par défaut, en particulier pour les processus Create, Update et Delete. Pour plus d’informations, consultez Personnalisation des opérations d’insertion, de mise à jour et de suppression.

Dans cette procédure pas à pas, vous utiliserez deux méthodes mappées aux procédures stockées dans l'exemple de base de données Northwind : CustOrdersDetail et CustOrderHist. Le mappage se produit lorsque vous exécutez l'outil en ligne de commande SQLMetal pour générer un fichier C#. Pour plus d'informations, consultez la section Composants requis par la suite dans cette procédure pas à pas.

Cette procédure pas à pas ne s’appuie pas sur le Concepteur Objet Relationnel. Les développeurs qui utilisent Visual Studio peuvent aussi utiliser le Concepteur Objet Relationnel pour implémenter les fonctionnalités des procédures stockées. Consultez Outils LINQ to SQL dans Visual Studio.

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 C#.

Prérequis

Elle requiert les éléments suivants :

  • Les fichiers sont stockés dans un dossier dédié, c:\linqtest7. Vous devez créer ce dossier avant de commencer la procédure pas à pas.

  • 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 northwnd.mdf dans le dossier c:\linqtest7.

  • Fichier de code C# généré à partir de la base de données Northwind.

    Cette procédure pas à pas a été écrite à l'aide de l'outil SQLMetal, avec la ligne de commande suivante :

    sqlmetal /code:"c:\linqtest7\northwind.cs" /language:csharp "c:\linqtest7\northwnd.mdf" /sprocs /functions /pluralize

    Pour plus d’informations, consultez SqlMetal.exe (outil de génération de code).

Vue d’ensemble

Cette procédure pas à pas se compose de six tâches principales :

  • Configuration de la solution LINQ to SQL dans Visual Studio.

  • Ajout de l'assembly System.Data.Linq au projet.

  • Ajout du fichier de code de base de données au projet.

  • Création d'une connexion à la base de données.

  • Configuration de l'interface utilisateur.

  • Exécution et test de l'application.

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 de Visual Studio, pointez sur Nouveau, puis cliquez sur Projet.

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

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

  4. Dans la zone Nom, tapez SprocOnlyApp.

  5. Dans la zone Emplacement, vérifiez l’endroit où vous voulez stocker vos fichiers projet.

  6. Cliquez sur OK.

    Le Concepteur Windows Forms s'ouvre.

Ajout de la référence à l'assembly LINQ to SQL

L’assembly LINQ to SQL n’est pas inclus dans le modèle Application Windows Forms standard. Vous devrez ajouter l'assembly vous-même, comme expliqué dans les étapes suivantes :

Pour ajouter System.Data.Linq.dll

  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.

Ajout du fichier de code Northwind au projet

Ces étapes supposent que vous avez utilisé l'outil SQLMetal pour générer un fichier de code à partir de l'exemple de base de données Northwind. Pour plus d'informations, consultez la section Composants requis au début de cette procédure pas à pas.

Pour ajouter le fichier de code Northwind au projet

  1. Dans le menu Projet , cliquez sur Ajouter un élément existant.

  2. Dans la boîte de dialogue Ajouter un élément existant, accédez à c:\linqtest7\northwind.cs, puis cliquez sur Ajouter.

    Le fichier northwind.cs est ajouté au projet.

Création d'une connexion à une base de données

Au cours de cette étape, vous allez définir la connexion à l'exemple de base de données Northwind. Cette procédure pas à pas utilise "c:\linqtest7\northwnd.mdf" comme chemin d’accès.

Pour créer la connexion de base de données

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur Form1.cs, puis cliquez sur Afficher le code.

  2. Tapez le code suivant dans la classe Form1 :

    Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
    

Configuration de l'interface utilisateur.

Au cours de cette tâche, vous configurez une interface afin que les utilisateurs puissent exécuter des procédures stockées pour accéder aux données dans la base de données. Dans les applications que vous développez avec cette procédure pas à pas, les utilisateurs peuvent accéder aux données dans la base de données uniquement en utilisant les procédures stockées incorporées dans l'application.

Pour configurer l'interface utilisateur

  1. Revenez dans le Concepteur Windows Forms (Form1.cs[Design]).

  2. Dans le menu Affichage , cliquez sur Boîte à outils.

    La boîte à outils s'ouvre.

    Notes

    Cliquez sur la punaise Masquer automatiquement pour garder la boîte à outils ouverte pendant que vous effectuez les autres étapes de cette section.

  3. Faites glisser deux boutons, deux zones de texte et deux étiquettes de la boîte à outils sur Form1.

    Disposez les contrôles comme dans l'illustration associée. Développez Form1 afin que les contrôles s’ajustent facilement.

  4. Cliquez avec le bouton droit sur label1, puis cliquez sur Propriétés.

  5. Changez la propriété Texte de label1 en Enter OrderID: (Entrez un ID de commande :).

  6. De même façon pour label2, changez la propriété Texte de label2 en Enter CustomerID: (Entrez un ID de client :).

  7. De même, changez la propriété Texte de button1 en Order Details (Détails de la commande).

  8. Changez la propriété Texte de button2 en Order History (Historique des commandes).

    Élargissez les contrôles boutons afin que tout le texte soit visible.

Pour gérer des clics de bouton

  1. Double-cliquez sur Order Details sur Form1 pour ouvrir le gestionnaire d’événements de button1 dans l’éditeur de code.

  2. Tapez le code suivant dans le gestionnaire d'événements button1 :

    // Declare a variable to hold the contents of
    // textBox1 as an argument for the stored
    // procedure.
    string param = textBox1.Text;
    
    // Declare a variable to hold the results
    // returned by the stored procedure.
    var custquery = db.CustOrdersDetail(Convert.ToInt32(param));
    
    // Execute the stored procedure and display the results.
    string msg = "";
    foreach (CustOrdersDetailResult custOrdersDetail in custquery)
    {
        msg = msg + custOrdersDetail.ProductName + "\n";
    }
    if (msg == "")
        msg = "No results.";
    MessageBox.Show(msg);
    
    // Clear the variables before continuing.
    param = "";
    textBox1.Text = "";
    
  3. Double-cliquez maintenant sur button2 sur Form1 pour ouvrir le gestionnaire de button2.

  4. Tapez le code suivant dans le gestionnaire d'événements button2 :

    // Comments in the code for button2 are the same
    // as for button1.
    string param = textBox2.Text;
    
    var custquery = db.CustOrderHist(param);
    
    string msg = "";
    foreach (CustOrderHistResult custOrdHist in custquery)
    {
        msg = msg + custOrdHist.ProductName + "\n";
    }
    MessageBox.Show(msg);
    
    param = "";
    textBox2.Text = "";
    

Test de l’application

Vous allez maintenant tester votre application. Notez que votre contact avec le magasin de données est limité aux actions que les deux procédures stockées peuvent accepter. Ces actions consistent à retourner les produits inclus pour n'importe quel orderID que vous entrez ou à retourner un historique des produits commandés pour n'importe quel CustomerID que vous entrez.

Pour tester l'application

  1. Appuyez sur F5 pour démarrer le débogage.

    Form1 s'affiche.

  2. Dans la zone Enter OrderID, tapez 10249, puis cliquez sur Order Details.

    Un message répertorie les produits inclus dans la commande 10249.

    Cliquez sur OK pour fermer le message.

  3. Dans la zone Enter CustomerID, tapez ALFKI, puis cliquez sur Order History.

    Le message qui apparaît répertorie l'historique des commandes pour le client ALFKI.

    Cliquez sur OK pour fermer le message.

  4. Dans la zone Enter OrderID, tapez 123, puis cliquez sur Order Details.

    Le message suivant s'affiche : « Aucun résultat ».

    Cliquez sur OK pour fermer le message.

  5. Dans le menu Déboguer, cliquez sur Arrêter le débogage.

    La session de débogage s'arrête.

  6. Si vous avez terminé les tests, vous pouvez cliquer sur Fermer le projet dans le menu Fichier et enregistrer votre projet quand vous êtes invité à le faire.

Étapes suivantes

Vous pouvez améliorer ce projet en apportant des modifications. Par exemple, vous pouvez répertorier les procédures stockées disponibles dans une zone de liste et demander à l'utilisateur de sélectionner les procédures à exécuter. Vous pouvez également transmettre en continu la sortie des rapports dans un fichier texte.

Voir aussi