Dela via


Genomgång: Manipulera data (C#)

Den här genomgången innehåller ett grundläggande LINQ till SQL-scenario från slutpunkt till slutpunkt för att lägga till, ändra och ta bort data i en databas. Du använder en kopia av Northwind-exempeldatabasen för att lägga till en kund, ändra namnet på en kund och ta bort en beställning.

Kommentar

Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.

Den här genomgången skrevs med hjälp av Visual C# Development Inställningar.

Förutsättningar

Den här genomgången kräver följande:

  • Den här genomgången använder en dedikerad mapp ("c:\linqtest6") för att lagra filer. Skapa den här mappen innan du påbörjar genomgången.

  • Northwind-exempeldatabasen.

    Om du inte har den här databasen på utvecklingsdatorn kan du ladda ned den från Microsofts nedladdningswebbplats. Anvisningar finns i Ladda ned exempeldatabaser. När du har laddat ned databasen kopierar du filen northwnd.mdf till mappen c:\linqtest6.

  • En C#-kodfil som genererats från Northwind-databasen.

    Du kan generera den här filen med hjälp av antingen Object Relational Designer eller SQLMetal-verktyget. Den här genomgången skrevs med hjälp av SQLMetal-verktyget med följande kommandorad:

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

    Mer information finns i SqlMetal.exe (kodgenereringsverktyg).

Översikt

Den här genomgången består av sex huvuduppgifter:

  • Skapa LINQ till SQL-lösningen i Visual Studio.

  • Lägga till databaskodfilen i projektet.

  • Skapa ett nytt kundobjekt.

  • Ändra kontaktnamnet för en kund.

  • Tar bort en order.

  • Skicka dessa ändringar till Northwind-databasen.

Skapa en LINQ till SQL-lösning

I den första uppgiften skapar du en Visual Studio-lösning som innehåller de referenser som krävs för att skapa och köra ett LINQ-projekt till SQL.

Så här skapar du en LINQ-till SQL-lösning

  1. På Visual Studio File-menyn pekar du på Ny och klickar sedan på Projekt.

  2. I fönstret Projekttyper i dialogrutan Nytt projekt klickar du på Visual C#.

  3. I fönstret Mallar klickar du på Konsolprogram.

  4. I rutan Namn skriver du LinqDataManipulationApp.

  5. I rutan Plats kontrollerar du var du vill lagra dina projektfiler.

  6. Klicka på OK.

Lägga till LINQ-referenser och -direktiv

Den här genomgången använder sammansättningar som kanske inte installeras som standard i projektet. Om System.Data.Linq inte visas som en referens i projektet lägger du till det, enligt beskrivningen i följande steg:

Så här lägger du till System.Data.Linq

  1. Högerklicka på Referenser i Solution Explorer och klicka sedan på Lägg till referens.

  2. I dialogrutan Lägg till referens klickar du på .NET, klickar på sammansättningen System.Data.Linq och klickar sedan på OK.

    Sammansättningen läggs till i projektet.

  3. Lägg till följande direktiv överst i Program.cs:

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

Lägga till Northwind-kodfilen i projektet

De här stegen förutsätter att du har använt SQLMetal-verktyget för att generera en kodfil från Northwind-exempeldatabasen. Mer information finns i avsnittet Förutsättningar tidigare i den här genomgången.

Så här lägger du till northwind-kodfilen i projektet

  1. På Projekt-menyn klickar du på Lägg till befintligt objekt.

  2. I dialogrutan Lägg till befintligt objekt navigerar du till c:\linqtest6\northwind.cs och klickar sedan på Lägg till.

    Filen northwind.cs läggs till i projektet.

Konfigurera database Anslut ion

Testa först anslutningen till databasen. Observera särskilt att databasen Northwnd inte har något i-tecken. Om du genererar fel i nästa steg granskar du filen northwind.cs för att avgöra hur den partiella Klassen Northwind stavas.

Konfigurera och testa databasanslutningen

  1. Skriv eller klistra in följande kod i Main -metoden i klassen 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. Tryck på F5 för att testa programmet nu.

    Ett konsolfönster öppnas.

    Du kan stänga programmet genom att trycka på Retur i konsolfönstret eller genom att klicka på Stoppa felsökning på Visual Studio-felsökningsmenyn.

Skapa en ny entitet

Det är enkelt att skapa en ny entitet. Du kan skapa objekt (till exempel Customer) med hjälp av nyckelordet new .

I det här och följande avsnitt gör du bara ändringar i den lokala cachen. Inga ändringar skickas till databasen förrän du anropar SubmitChanges mot slutet av den här genomgången.

Så här lägger du till ett nytt kundentitetsobjekt

  1. Skapa en ny Customer genom att lägga till följande kod tidigare Console.ReadLine(); i Main -metoden:

    // 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. Tryck på F5 för att felsöka lösningen.

  3. Tryck på Retur i konsolfönstret för att sluta felsöka och fortsätta genomgången.

Uppdatera en entitet

I följande steg hämtar du ett Customer objekt och ändrar en av dess egenskaper.

Ändra namnet på en kund

  • Lägg till följande kod ovan 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";
    

Ta bort en entitet

Med samma kundobjekt kan du ta bort den första beställningen.

Följande kod visar hur du bryter relationer mellan rader och hur du tar bort en rad från databasen. Lägg till följande kod innan för Console.ReadLine att se hur objekt kan tas bort:

Ta bort en rad

  • Lägg till följande kod precis ovanför 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);
    

Skicka ändringar till databasen

Det sista steget som krävs för att skapa, uppdatera och ta bort objekt är att faktiskt skicka ändringarna till databasen. Utan det här steget är dina ändringar bara lokala och visas inte i frågeresultaten.

Skicka ändringar till databasen

  1. Infoga följande kod precis ovanför Console.ReadLine:

    db.SubmitChanges();
    
  2. Infoga följande kod (efter SubmitChanges) för att visa före- och eftereffekterna av att skicka ändringarna:

    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. Tryck på F5 för att felsöka lösningen.

  4. Tryck på Retur i konsolfönstret för att stänga programmet.

Kommentar

När du har lagt till den nya kunden genom att skicka ändringarna kan du inte köra den här lösningen igen som den är. Om du vill köra lösningen igen ändrar du namnet på kundens och kundens ID som ska läggas till.

Se även