Partager via


Procédure pas à pas : manipulation de données (C#)

Cette procédure pas à pas fournit un scénario LINQ to SQL de bout en bout fondamental pour l’ajout, la modification et la suppression de données dans une base de données. Vous utiliserez une copie de l’exemple de base de données Northwind pour ajouter un client, modifier le nom d’un client et supprimer une commande.

Remarque

Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur Visual Studio dans les instructions suivantes. L’édition Visual Studio que vous avez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.

Cette procédure pas à pas a été écrite à l’aide des paramètres de développement Visual C#.

Conditions préalables

Cette procédure pas à pas nécessite les éléments suivants :

  • Cette procédure pas à pas utilise un dossier dédié (« c :\linqtest6 ») pour contenir des fichiers. Créez ce dossier avant de commencer la procédure pas à pas.

  • Exemple de base de données Northwind.

    Si vous n’avez pas cette base de données 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 :\linqtest6.

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

    Vous pouvez générer ce fichier à l’aide du Concepteur relationnel objet ou de l’outil SQLMetal. Cette procédure pas à pas a été écrite à l’aide de l’outil SQLMetal avec la ligne de commande suivante :

    sqlmetal /code :"c :\linqtest6\northwind.cs » /language :csharp « C :\linqtest6\northwnd.mdf » /pluralize

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

Aperçu

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

  • Création de la solution LINQ to SQL dans Visual Studio.

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

  • Création d’un objet client.

  • Modification du nom de contact d’un client.

  • Suppression d’une commande.

  • Envoi de ces modifications à la base de données Northwind.

Création d’une solution LINQ to SQL

Dans cette première tâche, vous créez 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 Visual Studio, pointez sur Nouveau, puis cliquez sur Projet.

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

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

  4. Dans la zone Nom , tapez LinqDataManipulationApp.

  5. Dans la zone Emplacement , vérifiez où vous souhaitez stocker vos fichiers projet.

  6. Cliquez sur OK.

Ajout de références et de directives LINQ

Cette procédure pas à pas utilise des assemblys qui peuvent ne pas être installés par défaut dans votre projet. Si System.Data.Linq n’est pas répertorié comme référence dans votre projet, 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. Ajoutez les directives suivantes en haut de Program.cs :

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

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 Prérequis plus haut dans 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 :\linqtest6\northwind.cs, puis cliquez sur Ajouter.

    Le fichier northwind.cs est ajouté au projet.

Configuration de la connexion de base de données

Tout d’abord, testez votre connexion à la base de données. Notez en particulier que la base de données, Northwnd, n’a pas de caractère i. Si vous générez des erreurs dans les étapes suivantes, passez en revue le fichier northwind.cs pour déterminer la façon dont la classe partielle Northwind est orthographié.

Pour configurer et tester la connexion de base de données

  1. Tapez ou collez le code suivant dans la méthode Main de la classe Program :

    // Use the following connection string.
    Northwnd db = new Northwnd(@"c:\linqtest6\northwnd.mdf");
    
    // Keep the console window open after activity stops.
    Console.ReadLine();
    
  2. Appuyez sur F5 pour tester l’application à ce stade.

    Une fenêtre console s’ouvre.

    Vous pouvez fermer l’application en appuyant sur Entrée dans la fenêtre console , ou en cliquant sur Arrêter le débogage dans le menu Débogage de Visual Studio.

Création d’une entité

La création d’une entité est simple. Vous pouvez créer des objets (par exemple Customer) à l’aide du new mot clé.

Dans cette section et les sections suivantes, vous apportez uniquement des modifications au cache local. Aucune modification n’est envoyée à la base de données tant que vous n’avez pas appelé SubmitChanges vers la fin de cette procédure pas à pas.

Pour ajouter un nouvel objet d’entité Client

  1. Créez un nouveau Customer code en ajoutant le code suivant avant Console.ReadLine(); dans la Main méthode :

    // Create the new Customer object.
    Customer newCust = new Customer();
    newCust.CompanyName = "AdventureWorks Cafe";
    newCust.CustomerID = "ADVCA";
    
    // Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust);
    
    Console.WriteLine("\nCustomers matching CA before insert");
    
    foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  2. Appuyez sur F5 pour déboguer la solution.

  3. Appuyez sur Entrée dans la fenêtre console pour arrêter le débogage et continuer la procédure pas à pas.

Mise à jour d’une entité

Dans les étapes suivantes, vous allez récupérer un Customer objet et modifier l’une de ses propriétés.

Pour modifier le nom d’un client

  • Ajoutez le code suivant ci-dessus Console.ReadLine();:

    // Query for specific customer.
    // First() returns one object rather than a collection.
    var existingCust =
        (from c in db.Customers
         where c.CustomerID == "ALFKI"
         select c)
        .First();
    
    // Change the contact name of the customer.
    existingCust.ContactName = "New Contact";
    

Suppression d’une entité

À l’aide du même objet client, vous pouvez supprimer la première commande.

Le code suivant montre comment séparer les relations entre les lignes et comment supprimer une ligne de la base de données. Ajoutez le code suivant avant Console.ReadLine de voir comment les objets peuvent être supprimés :

Pour supprimer une ligne

  • Ajoutez le code suivant juste au-dessus Console.ReadLine();:

    // Access the first element in the Orders collection.
    Order ord0 = existingCust.Orders[0];
    
    // Access the first element in the OrderDetails collection.
    OrderDetail detail0 = ord0.OrderDetails[0];
    
    // Display the order to be deleted.
    Console.WriteLine
        ("The Order Detail to be deleted is: OrderID = {0}, ProductID = {1}",
        detail0.OrderID, detail0.ProductID);
    
    // Mark the Order Detail row for deletion from the database.
    db.OrderDetails.DeleteOnSubmit(detail0);
    

Envoi de modifications à la base de données

La dernière étape requise pour la création, la mise à jour et la suppression d’objets consiste à envoyer réellement les modifications à la base de données. Sans cette étape, vos modifications sont uniquement locales et n’apparaissent pas dans les résultats de la requête.

Pour envoyer des modifications à la base de données

  1. Insérez le code suivant juste au-dessus Console.ReadLine:

    db.SubmitChanges();
    
  2. Insérez le code suivant (après SubmitChanges) pour afficher les effets avant et après de l’envoi des modifications :

    Console.WriteLine("\nCustomers matching CA after update");
    foreach (var c in db.Customers.Where(cust =>
        cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  3. Appuyez sur F5 pour déboguer la solution.

  4. Appuyez sur Entrée dans la fenêtre console pour fermer l’application.

Remarque

Une fois que vous avez ajouté le nouveau client en envoyant les modifications, vous ne pouvez pas réexécuter cette solution telle qu’elle est. Pour réexécuter la solution, modifiez le nom du client et de l’ID client à ajouter.

Voir aussi