Dela via


Genomgång: Manipulera data (Visual Basic)

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 Basic 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:\linqtest2") 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:\linqtest2.

  • En Visual Basic-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:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\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. Klicka på Nytt projekt på Menyn Visual Studio-fil.

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

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

  4. I rutan Namn skriver du LinqDataManipulationApp.

  5. 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 (klicka på Visa alla filer i Solution Explorer och expandera noden Referenser ) lägger du till den, 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. I kodredigeraren lägger du till följande direktiv ovan Modul1:

    Imports System.Data.Linq
    Imports 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:\linqtest2\northwind.vb och klickar sedan på Lägg till.

    Filen northwind.vb läggs till i projektet.

Konfigurera database Anslut ion

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

Konfigurera och testa databasanslutningen

  1. Skriv eller klistra in följande kod i Sub Main:

    ' Use a connection string, but connect to
    '     the temporary copy of the database.
    Dim db As New Northwnd _
        ("C:\linqtest2\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.

    Stäng 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 Sub Main:

    ' Create the new Customer object.
    Dim newCust As New Customer()
    newCust.CompanyName = "AdventureWorks Cafe"
    newCust.CustomerID = "A3VCA"
    
    ' Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust)
    
    Console.WriteLine("Customers matching CA before insert:")
    
    Dim custQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In custQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  2. Tryck på F5 för att felsöka lösningen.

    Resultatet som visas i konsolfönstret är följande:

    Customers matching CA before insert:

    Customer ID: CACTU

    Customer ID: RICAR

    Observera att den nya raden inte visas i resultatet. De nya data har ännu inte skickats till databasen.

  3. Tryck på Retur i konsolfönstret för att sluta felsöka.

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():

    Dim existingCust = _
        (From cust In db.Customers _
         Where cust.CustomerID = "ALFKI" _
         Select cust).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.

Ta bort en rad

  • Lägg till följande kod precis ovanför Console.ReadLine():

    ' Access the first element in the Orders collection.
    Dim ord0 As Order = existingCust.Orders(0)
    
    ' Access the first element in the OrderDetails collection.
    Dim detail0 As OrderDetail = ord0.OrderDetails(0)
    
    ' Display the order to be deleted.
    Console.WriteLine _
        (vbCrLf & "The Order Detail to be deleted is: OrderID = " _
        & detail0.OrderID)
    
    ' 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(vbCrLf & "Customers matching CA after update:")
    Dim finalQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In finalQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  3. Tryck på F5 för att felsöka lösningen.

    Konsolfönstret visas på följande sätt:

    Customers matching CA before update:  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
    The Order Detail to be deleted is: OrderID = 10643  
    
    Customers matching CA after update:  
    Customer ID: A3VCA  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
  4. Tryck på Retur i konsolfönstret för att sluta felsöka.

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 eftersom du inte kan lägga till samma kund igen som den är. Om du vill köra lösningen igen ändrar du värdet för det kund-ID som ska läggas till.

Se även