Share via


Procédure pas à pas : utilisation de procédures stockées uniquement (C#) (LINQ to SQL)

Mise à jour : November 2007

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 des procédures stockées uniquement. 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.

Remarque :

Vous pouvez également utiliser des procédures stockées dans les applications LINQ to SQL pour substituer le comportement par défaut, plus particulièrement pour les processus Create, Update et Delete. Pour plus d'informations, consultez Personnalisation des opérations d'insertion, de mise à jour et de suppression (LINQ to SQL).

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 également utiliser le Concepteur O/R pour implémenter les fonctionnalités de procédure stockée.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur 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

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 (LINQ to SQL). 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 Outil de génération de code (SqlMetal.exe).

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 où vous souhaitez 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.

    Remarque :

    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. Modifiez la propriété Text de label1 en Enter OrderID:.

  6. De la même façon pour label2, modifiez la propriété Text de label2 en Enter CustomerID:.

  7. De la même façon, modifiez la propriété Text de button1 en Order Details.

  8. Modifiez la propriété Text de button2 en Order History.

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

Boîte de dialogue

Pour gérer des clics de bouton

  1. Double-cliquez sur Order Details sur Form1 pour ouvrir le gestionnaire d'événements 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 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 lorsque 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

Concepts

Apprentissage par les procédures pas à pas (LINQ to SQL)

Autres ressources

Procédures stockées (LINQ to SQL)