Freigeben über


Exemplarische Vorgehensweise: Bearbeiten von Daten (C#)

Diese Anleitung bietet ein grundlegendes End-to-End-LINQ to SQL-Beispiel zum Hinzufügen, Ändern und Löschen von Daten in einer Datenbank. Sie verwenden eine Kopie der Northwind-Beispieldatenbank, um einen Kunden hinzuzufügen, den Namen eines Kunden zu ändern und eine Bestellung zu löschen.

Hinweis

Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.

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

Voraussetzungen

Für dieses Tutorial ist Folgendes erforderlich:

  • In dieser exemplarischen Vorgehensweise wird ein dedizierter Ordner ("c:\linqtest6") zum Speichern von Dateien verwendet. Erstellen Sie diesen Ordner, bevor Sie mit der Anleitung beginnen.

  • Die Northwind-Beispieldatenbank.

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

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

    Sie können diese Datei entweder mit dem Objektrelational-Designer oder dem SQLMetal-Tool generieren. 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).

Überblick

Diese exemplarische Vorgehensweise besteht aus sechs Hauptaufgaben:

  • Erstellen der LINQ to SQL-Lösung in Visual Studio.

  • Hinzufügen der Datenbankcodedatei zum Projekt.

  • Erstellen eines neuen Kundenobjekts.

  • Ändern des Kontaktnamens eines Kunden.

  • Löschen einer Bestellung.

  • Übermitteln dieser Änderungen an die Northwind-Datenbank.

Erstellen einer LINQ to SQL-Lösung

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

So erstellen Sie eine LINQ to SQL-Lösung

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

  2. Klicken Sie im Bereich "Projekttypen " im Dialogfeld "Neues Projekt " auf "Visual C#".

  3. Klicken Sie im Bereich "Vorlagen " auf "Konsolenanwendung".

  4. Geben Sie im Feld "Name" den Namen "LinqDataManipulationApp" ein.

  5. Überprüfen Sie im Feld "Speicherort ", wo Ihre Projektdateien gespeichert werden sollen.

  6. Klicke auf OK.

Hinzufügen von LINQ-Verweisen und Direktiven

In dieser exemplarischen Vorgehensweise werden Assemblys verwendet, die möglicherweise nicht standardmäßig in Ihrem Projekt installiert werden. Wenn System.Data.Linq nicht als Verweis in Ihrem Projekt aufgeführt ist, fügen Sie ihn hinzu, wie in den folgenden Schritten erläutert:

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, klicken Sie auf die Assembly "System.Data.Linq" und dann auf "OK".

    Die Baugruppe wird dem Projekt hinzugefügt.

  3. Fügen Sie oben in Program.cs die folgenden Direktiven 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 Generieren einer Codedatei aus der Northwind-Beispieldatenbank verwendet haben. Weitere Informationen finden Sie im Abschnitt "Voraussetzungen" weiter oben in diesem exemplarischen Leitfaden.

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

  1. Klicken Sie im Menü Project auf Bestehendes 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 northwind.cs Datei wird dem Projekt hinzugefügt.

Einrichten der Datenbankverbindung

Testen Sie zunächst die Verbindung mit der Datenbank. Beachten Sie insbesondere, dass die Datenbank Northwnd kein i-Zeichen aufweist. Wenn Sie in den nächsten Schritten Fehler generieren, überprüfen Sie die northwind.cs-Datei, um zu bestimmen, wie die partielle Northwind-Klasse geschrieben wird.

So richten Sie die Datenbankverbindung ein und testen sie

  1. Geben Sie den folgenden Code in die Methode in der Main Program-Klasse 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 F5, um die Anwendung zu diesem Zeitpunkt zu testen.

    Ein Konsolenfenster wird geöffnet.

    Sie können die Anwendung schließen, indem Sie im Konsolenfenster die EINGABETASTE drücken oder im Menü "Debuggen" von Visual Studio auf "Debuggen beenden" klicken.

Erstellen einer neuen Entität

Das Erstellen einer neuen Entität ist einfach. Sie können Objekte (z. B. Customer) mithilfe des new Schlüsselworts erstellen.

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

So fügen Sie ein neues Kundenentitätsobjekt hinzu

  1. Erstellen Sie eine neue 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 F5, um die Lösung zu debuggen.

  3. Drücken Sie die EINGABETASTE, um das Debuggen im Konsolenfenster zu beenden und mit der Anleitung fortzufahren.

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 oben Console.ReadLine();hinzu:

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

Mit demselben Kundenobjekt können Sie die erste Bestellung löschen.

Der folgende Code veranschaulicht, wie Beziehungen zwischen Zeilen getrennt werden und wie eine Zeile aus der Datenbank 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 direkt oben Console.ReadLine();hinzu:

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

Übermitteln von Änderungen an der Datenbank

Der letzte Schritt zum Erstellen, Aktualisieren und Löschen von Objekten besteht darin, die Änderungen tatsächlich an die Datenbank zu übermitteln. Ohne diesen Schritt sind Ihre Änderungen nur lokal und werden nicht in Abfrageergebnissen angezeigt.

Änderungen an die Datenbank übermitteln.

  1. Fügen Sie den folgenden Code direkt oben Console.ReadLineein:

    db.SubmitChanges();
    
  2. Fügen Sie den folgenden Code (nach SubmitChanges) ein, um die Vor- und Nachher-Effekte der Übermittlung der Änderungen anzuzeigen:

    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 F5, um die Lösung zu debuggen.

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

Hinweis

Nachdem Sie den neuen Kunden durch Übermitteln der Änderungen hinzugefügt haben, können Sie diese Lösung nicht wie folgt ausführen. Um die Lösung erneut auszuführen, ändern Sie den Namen des Kunden und die Kunden-ID, die hinzugefügt werden sollen.

Siehe auch