Exemplarische Vorgehensweise: Bearbeiten von Daten (C#)

Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-Szenario für LINQ to SQL zum Hinzufügen, Ändern und Löschen von Daten in einer Datenbank bereit. 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.

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. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Diese exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben.

Voraussetzungen

Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:

  • Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest6") als Speicherort für Dateien. Erstellen Sie diesen Ordner, bevor Sie die exemplarische Vorgehensweise starten.

  • Die Beispieldatenbank Northwind.

    Befindet sich diese Datenbank nicht auf Ihrem Entwicklungscomputer, können Sie diese von der Microsoft Downloadsite herunterladen. Anweisungen hierzu finden Sie unter Herunterladen von Beispieldatenbanken. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei northwnd.mdf in den Ordner c:\linqtest6.

  • Eine von der Datenbank Northwind generierte C#-Codedatei.

    Sie können diese Datei generieren, indem Sie entweder den O/R-Designer oder das SQLMetal-Tool verwenden. Diese exemplarische Vorgehensweise wurde mithilfe des SQLMetal-Tools mit der folgenden Befehlszeile geschrieben:

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

    Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung).

Übersicht

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:

  • Erstellen der LINQ to SQL-Projektmappe in Visual Studio

  • Hinzufügen der Datenbank-Codedatei zum Projekt.

  • Erstellen eines neuen Kundenobjekts.

  • Ändern des Kontaktnamens eines Kunden.

  • Löschen einer Bestellung.

  • Übergeben dieser Änderungen an der Datenbank Northwind.

Erstellen einer LINQ to SQL-Lösung

In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Projektmappe, die die erforderlichen Verweise zur Erstellung und Ausführung eines LINQ to SQL-Projekts enthält.

So erstellen Sie eine LINQ to SQL-Lösung

  1. Zeigen Sie in Visual Studio im Menü Datei auf Neu, und klicken Sie auf Projekt.

  2. Klicken Sie im Bereich Projekttypen des Dialogfelds Neues Projekt auf Visual C#.

  3. Klicken Sie im Bereich Vorlagen auf Konsolenanwendung.

  4. Geben Sie in das Feld NameLinqDataManipulationApp ein.

  5. Geben Sie im Feld Speicherort an, wo die Projektdateien gespeichert werden sollen.

  6. Klicken Sie auf OK.

Hinzufügen von LINQ-Verweisen und Anweisungen

Diese exemplarische Vorgehensweise verwendet Assemblys, die im Projekt u. U. nicht standardmäßig installiert sind. Wird System.Data.Linq in Ihrem Projekt nicht als Verweis aufgeführt, fügen Sie diesen wie nachfolgend beschrieben hinzu.

So fügen Sie System.Data.Linq hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.

  2. Klicken Sie im Dialogfeld Verweis hinzufügen auf .NET, auf die System.Data.Linq-Assembly und dann auf OK.

    Dem Projekt wird die Assembly hinzugefügt.

  3. Fügen Sie die folgenden Direktiven am oberen Rand von Program.cs hinzu:

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

Hinzufügen der Northwind-Codedatei zum Projekt.

Bei diesen Schritten wird davon ausgegangen, dass Sie das SQLMetal-Tool zum Erzeugen einer Codedatei aus der Beispieldatenbank Northwind verwendet haben. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter oben in dieser exemplarischen Vorgehensweise.

So fügen Sie die Northwind-Codedatei dem Projekt hinzu.

  1. Klicken Sie im Menü Projekt auf Vorhandenes Element hinzufügen.

  2. Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zu c:\linqtest6\northwind.cs, und klicken Sie dann auf Hinzufügen.

    Die Datei northwind.cs wird dem Projekt hinzugefügt.

Einrichten der Datenverbindungen

Testen Sie zuerst die Verbindung zur Datenbank. Beachten Sie vor allem, dass die Datenbank, Northwnd, kein i-Zeichen hat. Sollten im nächsten Schritt Fehler auftreten, prüfen Sie in der Datei northwind.cs die Schreibweise der partiellen Klasse Northwind.

So richten Sie die Datenbankverbindung ein und testen diese

  1. Geben Sie den folgenden Code in die Main-Methode in der Programmklasse ein, oder fügen Sie ihn ein:

    // 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.

    Dann wird ein Konsolenfenster geöffnet.

    Schließen Sie die Anwendung, indem Sie im Konsolenfenster die EINGABETASTE drücken oder im Debuggen-Menü von Visual Studio auf Debugging stoppen klicken.

Erstellen einer neuen Entität

Eine neue Entität zu erstellen, ist einfach. Sie können Objekte (z. B. Customer) erstellen, indem Sie das new-Schlüsselwort verwenden.

In diesem und den folgenden Abschnitten nehmen Sie Änderungen nur am lokalen Cache vor. Es werden keine Änderungen an die Datenbank gesendet, bis Sie zum Ende dieser exemplarischen Vorgehensweise SubmitChanges aufrufen.

So fügen Sie ein neues Kundenentitätsobjekt hinzu

  1. Erstellen Sie einen neuen Customer, indem Sie den folgenden Code vor Console.ReadLine(); in der Main-Methode hinzufügen:

    // 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.

  3. Drücken Sie die EINGABETASTE im Konsolenfenster, um das Debugging zu beenden und die exemplarische Vorgehensweise fortzusetzen.

Aktualisieren einer Entität

In den folgenden Schritten rufen Sie ein Customer-Objekt ab und ändern eine seiner Eigenschaften.

So ändern Sie den Namen eines Kunden

  • Fügen Sie den folgenden Code oberhalb von Console.ReadLine(); ein:

    // 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ät

Unter Verwendung des gleichen Kundenobjekts können Sie die erste Bestellung löschen.

Der folgende Code zeigt, wie Beziehungen zwischen Zeilen getrennt werden und wie eine Zeile aus der Datenbank Northwind gelöscht wird. Fügen Sie den folgenden Code vor Console.ReadLine hinzu, um zu sehen, wie Objekte gelöscht werden können:

So löschen Sie eine Zeile

  • Fügen Sie den folgenden Code genau oberhalb von Console.ReadLine(); ein.

    // 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 Datenbank

Der letzte Schritt beim Erstellen, Aktualisieren und Löschen von Objekten besteht in der eigentlichen Übergabe der Änderungen an die Datenbank. Ohne diesen Schritt sind die Änderungen nur lokal und werden nicht in Abfrageergebnissen angezeigt.

So übergeben Sie die Änderungen an die Datenbank

  1. Fügen Sie den folgenden Code genau oberhalb von Console.ReadLine ein:

    db.SubmitChanges();
    
  2. Fügen Sie den folgenden Code (nach SubmitChanges) ein, um den Vorher-Nachher-Effekt der Änderungsübergabe zu zeigen:

    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.

  4. Drücken Sie die EINGABETASTE im Konsolenfenster, um die Anwendung zu schließen.

Hinweis

Wenn Sie den neuen Kunden durch Übergeben der Änderungen hinzugefügt haben, können Sie diese Lösung nicht einfach wieder ausführen. Um die Lösung erneut auszuführen, ändern Sie den Namen und die ID des hinzuzufügenden Kunden.

Siehe auch