Exemplarische Vorgehensweise: Bearbeiten von Daten (C#)Walkthrough: Manipulating Data (C#)

Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-Szenario für LINQ to SQLLINQ to SQL zum Hinzufügen, Ändern und Löschen von Daten in einer Datenbank bereit.This walkthrough provides a fundamental end-to-end LINQ to SQLLINQ to SQL scenario for adding, modifying, and deleting data in a database. Sie werden eine Kopie der Beispieldatenbank Northwind verwenden, um einen Kunden hinzuzufügen, den Namen des Kunden zu ändern und eine Bestellung zu löschen.You will use a copy of the sample Northwind database to add a customer, change the name of a customer, and delete an order.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig.The Visual Studio edition that you have and the settings that you use determine these elements. Weitere Informationen finden Sie unter Personalisieren der IDE.For more information, see Personalizing the IDE.

Diese exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben.This walkthrough was written by using Visual C# Development Settings.

Erforderliche KomponentenPrerequisites

Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:This walkthrough requires the following:

  • Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest6") als Speicherort für Dateien.This walkthrough uses a dedicated folder ("c:\linqtest6") to hold files. Erstellen Sie diesen Ordner, bevor Sie die exemplarische Vorgehensweise starten.Create this folder before you begin the walkthrough.

  • Die Beispieldatenbank Northwind.The Northwind sample database.

    Befindet sich diese Datenbank nicht auf Ihrem Entwicklungscomputer, können Sie diese von der Microsoft Downloadsite herunterladen.If you do not have this database on your development computer, you can download it from the Microsoft download site. Anweisungen hierzu finden Sie unter Herunterladen von Beispieldatenbanken.For instructions, see Downloading Sample Databases. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei northwnd.mdf in den Ordner c:\linqtest6.After you have downloaded the database, copy the northwnd.mdf file to the c:\linqtest6 folder.

  • Eine von der Datenbank Northwind generierte C#-Codedatei.A C# code file generated from the Northwind database.

    Sie können diese Datei erzeugen, indem Sie entweder den Object Relational DesignerObject Relational Designer oder das SQLMetal-Tool verwenden.You can generate this file by using either the Object Relational DesignerObject Relational Designer or the SQLMetal tool. Diese exemplarische Vorgehensweise wurde mithilfe des SQLMetal-Tools mit der folgenden Befehlszeile geschrieben:This walkthrough was written by using the SQLMetal tool with the following command line:

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

    Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung).For more information, see SqlMetal.exe (Code Generation Tool).

ÜbersichtOverview

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:This walkthrough consists of six main tasks:

  • Erstellen der LINQ to SQLLINQ to SQL-Lösung in Visual StudioVisual Studio.Creating the LINQ to SQLLINQ to SQL solution in Visual StudioVisual Studio.

  • Hinzufügen der Datenbank-Codedatei zum Projekt.Adding the database code file to the project.

  • Erstellen eines neuen Kundenobjekts.Creating a new customer object.

  • Ändern des Kontaktnamens eines Kunden.Modifying the contact name of a customer.

  • Löschen einer Bestellung.Deleting an order.

  • Übergeben dieser Änderungen an der Datenbank Northwind.Submitting these changes to the Northwind database.

Erstellen einer LINQ to SQL-LösungCreating a LINQ to SQL Solution

In dieser ersten Aufgabe erstellen Sie eine Visual StudioVisual Studio-Lösung, die die erforderlichen Verweise zur Erstellung und Ausführung eines LINQ to SQLLINQ to SQL-Projekts enthält.In this first task, you create a Visual StudioVisual Studio solution that contains the necessary references to build and run a LINQ to SQLLINQ to SQL project.

So erstellen Sie eine LINQ to SQL-LösungTo create a LINQ to SQL solution

  1. Auf der Visual StudioVisual Studio Datei Sie im Menü neu, und klicken Sie dann auf Projekt.On the Visual StudioVisual Studio File menu, point to New, and then click Project.

  2. In der -Projekttypen im Bereich der neues Projekt (Dialogfeld), klicken Sie auf Visual C#-.In the Project types pane in the New Project dialog box, click Visual C#.

  3. Klicken Sie im Bereich Vorlagen auf Konsolenanwendung.In the Templates pane, click Console Application.

  4. In der Namen geben LinqDataManipulationApp.In the Name box, type LinqDataManipulationApp.

  5. In der Speicherort Vergewissern Sie sich, wo die Projektdateien gespeichert werden sollen.In the Location box, verify where you want to store your project files.

  6. Klicken Sie auf OK.Click OK.

Hinzufügen von LINQ-Verweisen und AnweisungenAdding LINQ References and Directives

Diese exemplarische Vorgehensweise verwendet Assemblys, die im Projekt u. U. nicht standardmäßig installiert sind.This walkthrough uses assemblies that might not be installed by default in your project. Wird System.Data.Linq in Ihrem Projekt nicht als Verweis aufgeführt, fügen Sie diesen wie nachfolgend beschrieben hinzu.If System.Data.Linq is not listed as a reference in your project, add it, as explained in the following steps:

So fügen Sie System.Data.Linq hinzuTo add System.Data.Linq

  1. In Projektmappen-Explorer, mit der rechten Maustaste Verweise, und klicken Sie dann auf Verweis hinzufügen.In Solution Explorer, right-click References, and then click Add Reference.

  2. In der Verweis hinzufügen (Dialogfeld), klicken Sie auf .NET, klicken Sie auf die System.Data.Linq-Assembly, und klicken Sie dann auf OK.In the Add Reference dialog box, click .NET, click the System.Data.Linq assembly, and then click OK.

    Dem Projekt wird die Assembly hinzugefügt.The assembly is added to the project.

  3. Fügen Sie die folgenden Direktiven am oberen Rand von Program.cs hinzu:Add the following directives at the top of Program.cs:

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

Hinzufügen der Northwind-Codedatei zum Projekt.Adding the Northwind Code File to the Project

Bei diesen Schritten wird davon ausgegangen, dass Sie das SQLMetal-Tool zum Erzeugen einer Codedatei aus der Beispieldatenbank Northwind verwendet haben.These steps assume that you have used the SQLMetal tool to generate a code file from the Northwind sample database. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter oben in dieser exemplarischen Vorgehensweise.For more information, see the Prerequisites section earlier in this walkthrough.

So fügen Sie die Northwind-Codedatei dem Projekt hinzu.To add the northwind code file to the project

  1. Auf der Projekt Menü klicken Sie auf vorhandenes Element hinzufügen.On the Project menu, click Add Existing Item.

  2. In der vorhandenes Element hinzufügen (Dialogfeld), navigieren Sie zu c:\linqtest6\northwind.cs, und klicken Sie dann auf hinzufügen.In the Add Existing Item dialog box, navigate to c:\linqtest6\northwind.cs, and then click Add.

    Die Datei northwind.cs wird dem Projekt hinzugefügt.The northwind.cs file is added to the project.

Einrichten der DatenverbindungenSetting Up the Database Connection

Testen Sie zuerst die Verbindung zur Datenbank.First, test your connection to the database. Beachten Sie vor allem, dass die Datenbank, Northwnd, kein i-Zeichen hat.Note especially that the database, Northwnd, has no i character. Sollten im nächsten Schritt Fehler auftreten, prüfen Sie in der Datei northwind.cs die Schreibweise der partiellen Klasse Northwind.If you generate errors in the next steps, review the northwind.cs file to determine how the Northwind partial class is spelled.

So richten Sie die Datenbankverbindung ein und testen dieseTo set up and test the database connection

  1. Geben Sie den folgenden Code in die Main-Methode in der Programmklasse ein, oder fügen Sie ihn ein:Type or paste the following code into the Main method in the Program class:

    // Use the following connection string.
    Northwnd db = new Northwnd(@"c:\linqtest6\northwnd.mdf");
    
    // Keep the console window open after activity stops.
    Console.ReadLine();
    
  2. Drücken Sie die Taste F5, um die Anwendung an diesem Punkt zu testen.Press F5 to test the application at this point.

    Ein Konsole Fenster wird geöffnet.A Console window opens.

    Schließen Sie die Anwendung durch Drücken der EINGABETASTE in der Konsole Fenster, oder indem Sie auf Debuggen beenden auf die Visual StudioVisual Studio Debuggen Menü.You can close the application by pressing Enter in the Console window, or by clicking Stop Debugging on the Visual StudioVisual Studio Debug menu.

Erstellen einer neuen EntitätCreating a New Entity

Eine neue Entität zu erstellen, ist einfach.Creating a new entity is straightforward. Sie können Objekte (z. B. Customer) erstellen, indem Sie das new-Schlüsselwort verwenden.You can create objects (such as Customer) by using the new keyword.

In diesem und den folgenden Abschnitten nehmen Sie Änderungen nur am lokalen Cache vor.In this and the following sections, you are making changes only to the local cache. Es werden keine Änderungen an die Datenbank gesendet, bis Sie zum Ende dieser exemplarischen Vorgehensweise SubmitChanges aufrufen.No changes are sent to the database until you call SubmitChanges toward the end of this walkthrough.

So fügen Sie ein neues Kundenentitätsobjekt hinzuTo add a new Customer entity object

  1. Erstellen Sie einen neuen Customer, indem Sie den folgenden Code vor Console.ReadLine(); in der Main-Methode hinzufügen:Create a new Customer by adding the following code before Console.ReadLine(); in the Main method:

    // 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. Drücken Sie die Taste F5, um die Lösung zu Debuggen.Press F5 to debug the solution.

  3. Drücken Sie die EINGABETASTE in den Konsole Fenster aus, um den Debugvorgang unterbrechen und die exemplarische Vorgehensweise fortzusetzen.Press Enter in the Console window to stop debugging and continue the walkthrough.

Aktualisieren einer EntitätUpdating an Entity

In den folgenden Schritten rufen Sie ein Customer-Objekt ab und ändern eine seiner Eigenschaften.In the following steps, you will retrieve a Customer object and modify one of its properties.

So ändern Sie den Namen eines KundenTo change the name of a Customer

  • Fügen Sie den folgenden Code oberhalb von Console.ReadLine(); ein:Add the following code above 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";
    

Löschen einer EntitätDeleting an Entity

Unter Verwendung des gleichen Kundenobjekts können Sie die erste Bestellung löschen.Using the same customer object, you can delete the first order.

Der folgende Code zeigt, wie Beziehungen zwischen Zeilen getrennt werden und wie eine Zeile aus der Datenbank Northwind gelöscht wird.The following code demonstrates how to sever relationships between rows, and how to delete a row from the database. Fügen Sie den folgenden Code vor Console.ReadLine hinzu, um zu sehen, wie Objekte gelöscht werden können:Add the following code before Console.ReadLine to see how objects can be deleted:

So löschen Sie eine ZeileTo delete a row

  • Fügen Sie den folgenden Code genau oberhalb von Console.ReadLine(); ein.Add the following code just above 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);
    

Übergeben von Änderungen an die DatenbankSubmitting Changes to the Database

Der letzte Schritt beim Erstellen, Aktualisieren und Löschen von Objekten besteht in der eigentlichen Übergabe der Änderungen an die Datenbank.The final step required for creating, updating, and deleting objects, is to actually submit the changes to the database. Ohne diesen Schritt sind die Änderungen nur lokal und werden nicht in Abfrageergebnissen angezeigt.Without this step, your changes are only local and will not appear in query results.

So übergeben Sie die Änderungen an die DatenbankTo submit changes to the database

  1. Fügen Sie den folgenden Code genau oberhalb von Console.ReadLine ein:Insert the following code just above Console.ReadLine:

    db.SubmitChanges();
    
  2. Fügen Sie den folgenden Code (nach SubmitChanges) ein, um den Vorher-Nachher-Effekt der Änderungsübergabe zu zeigen:Insert the following code (after SubmitChanges) to show the before and after effects of submitting the changes:

    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. Drücken Sie die Taste F5, um die Lösung zu Debuggen.Press F5 to debug the solution.

  4. Drücken Sie die EINGABETASTE in den Konsole Fenster aus, um die Anwendung zu schließen.Press Enter in the Console window to close the application.

Hinweis

Wenn Sie den neuen Kunden durch Übergeben der Änderungen hinzugefügt haben, können Sie diese Lösung nicht einfach wieder ausführen.After you have added the new customer by submitting the changes, you cannot execute this solution again as is. Um die Lösung erneut auszuführen, ändern Sie den Namen und die ID des hinzuzufügenden Kunden.To execute the solution again, change the name of the customer and customer ID to be added.

Siehe auchSee Also

Lernen durch exemplarische VorgehensweisenLearning by Walkthroughs