Delen via


Overzicht: Gegevens bewerken (C#)

Deze procedure biedt een fundamenteel end-to-end LINQ voor SQL-scenario voor het toevoegen, wijzigen en verwijderen van gegevens in een database. U gebruikt een kopie van de northwind-voorbeelddatabase om een klant toe te voegen, de naam van een klant te wijzigen en een order te verwijderen.

Notitie

Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.

Dit scenario is geschreven met behulp van Visual C# Development Instellingen.

Vereisten

Voor dit scenario is het volgende vereist:

  • In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest6') voor het opslaan van bestanden. Maak deze map voordat u met de procedure begint.

  • De Northwind-voorbeelddatabase.

    Als u deze database niet op uw ontwikkelcomputer hebt, kunt u deze downloaden van de Microsoft-downloadsite. Zie Voorbeelddatabases downloaden voor instructies. Nadat u de database hebt gedownload, kopieert u het northwnd.mdf bestand naar de map c:\linqtest6.

  • Een C#-codebestand dat is gegenereerd op basis van de Northwind-database.

    U kunt dit bestand genereren met behulp van de Object Relational Designer of het hulpprogramma SQLMetal. Deze procedure is geschreven met behulp van het hulpprogramma SQLMetal met de volgende opdrachtregel:

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

    Zie SqlMetal.exe (hulpprogramma voor het genereren van code) voor meer informatie.

Overzicht

Deze procedure bestaat uit zes hoofdtaken:

  • Het maken van de LINQ naar de SQL-oplossing in Visual Studio.

  • Voeg het databasecodebestand toe aan het project.

  • Een nieuw klantobject maken.

  • De naam van de contactpersoon van een klant wijzigen.

  • Een bestelling verwijderen.

  • Deze wijzigingen verzenden naar de Northwind-database.

Een LINQ maken naar SQL-oplossing

In deze eerste taak maakt u een Visual Studio-oplossing die de benodigde verwijzingen bevat om een LINQ te bouwen en uit te voeren naar een SQL-project.

Een LINQ naar SQL-oplossing maken

  1. Wijs in het menu Visual Studio-bestand de optie Nieuw aan en klik vervolgens op Project.

  2. Klik in het deelvenster Projecttypen in het dialoogvenster Nieuw project op Visual C#.

  3. Klik in het deelvenster Sjablonen op Consoletoepassing.

  4. Typ LinqDataManipulationApp in het vak Naam.

  5. Controleer in het vak Locatie waar u uw projectbestanden wilt opslaan.

  6. Klik op OK.

LINQ-verwijzingen en -instructies toevoegen

In dit scenario worden assembly's gebruikt die mogelijk niet standaard in uw project worden geïnstalleerd. Als System.Data.Linq niet wordt vermeld als referentie in uw project, voegt u dit toe, zoals wordt uitgelegd in de volgende stappen:

System.Data.Linq toevoegen

  1. Klik in Solution Explorer met de rechtermuisknop op Verwijzingen en klik vervolgens op Verwijzing toevoegen.

  2. Klik in het dialoogvenster Verwijzing toevoegen op .NET, klik op de assembly System.Data.Linq en klik vervolgens op OK.

    De assembly wordt toegevoegd aan het project.

  3. Voeg bovenaan Program.cs de volgende instructies toe:

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

Het Northwind-codebestand toevoegen aan het project

Bij deze stappen wordt ervan uitgegaan dat u het hulpprogramma SQLMetal hebt gebruikt om een codebestand te genereren uit de Northwind-voorbeelddatabase. Zie de sectie Vereisten eerder in dit scenario voor meer informatie.

Het northwind-codebestand toevoegen aan het project

  1. Klik in het menu Project op Bestaand item toevoegen.

  2. Navigeer in het dialoogvenster Bestaand item toevoegen naar c:\linqtest6\northwind.cs en klik vervolgens op Toevoegen.

    Het bestand northwind.cs wordt toegevoegd aan het project.

De database-Verbinding maken ion instellen

Test eerst de verbinding met de database. Houd er vooral rekening mee dat de database Northwnd geen i-teken heeft. Als u fouten genereert in de volgende stappen, controleert u het northwind.cs bestand om te bepalen hoe de gedeeltelijke klasse Northwind is gespeld.

De databaseverbinding instellen en testen

  1. Typ of plak de volgende code in de Main methode in de klasse 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. Druk op F5 om de toepassing op dit moment te testen.

    Er wordt een consolevenster geopend.

    U kunt de toepassing sluiten door in het consolevenster op Enter te drukken of door te klikken op Foutopsporing stoppen in het menu Foutopsporing in Visual Studio.

Een nieuwe entiteit maken

Het maken van een nieuwe entiteit is eenvoudig. U kunt objecten (zoals Customer) maken met behulp van het new trefwoord.

In deze en de volgende secties gaat u alleen wijzigingen aanbrengen in de lokale cache. Er worden geen wijzigingen naar de database verzonden totdat u het einde van deze procedure aanroept SubmitChanges .

Een nieuw klantentiteitsobject toevoegen

  1. Maak een nieuwe Customer door de volgende code toe te voegen vóór Console.ReadLine(); in de Main methode:

    // 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. Druk op F5 om fouten in de oplossing op te sporen.

  3. Druk op Enter in het consolevenster om de foutopsporing te stoppen en door te gaan met de procedure.

Een entiteit bijwerken

In de volgende stappen haalt u een Customer object op en wijzigt u een van de eigenschappen.

De naam van een klant wijzigen

  • Voeg de volgende code hierboven Console.ReadLine();toe:

    // 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";
    

Een entiteit verwijderen

Met hetzelfde klantobject kunt u de eerste bestelling verwijderen.

De volgende code laat zien hoe u relaties tussen rijen verbreekt en hoe u een rij uit de database verwijdert. Voeg de volgende code toe voordat Console.ReadLine u kunt zien hoe objecten kunnen worden verwijderd:

Een rij verwijderen

  • Voeg de volgende code net boven Console.ReadLine();toe:

    // 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);
    

Wijzigingen verzenden naar de database

De laatste stap die nodig is voor het maken, bijwerken en verwijderen van objecten, is het daadwerkelijk indienen van de wijzigingen in de database. Zonder deze stap zijn uw wijzigingen alleen lokaal en worden ze niet weergegeven in queryresultaten.

Wijzigingen verzenden naar de database

  1. Voeg de volgende code net boven Console.ReadLinein:

    db.SubmitChanges();
    
  2. Voeg de volgende code (na SubmitChanges) in om de voor- en naeffecten van het indienen van de wijzigingen weer te geven:

    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. Druk op F5 om fouten in de oplossing op te sporen.

  4. Druk op Enter in het consolevenster om de toepassing te sluiten.

Notitie

Nadat u de nieuwe klant hebt toegevoegd door de wijzigingen in te dienen, kunt u deze oplossing niet meer als zodanig uitvoeren. Als u de oplossing opnieuw wilt uitvoeren, wijzigt u de naam van de klant en de klant-id die moet worden toegevoegd.

Zie ook