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
Klicka på Nytt projekt på Menyn Visual Studio-fil.
I fönstret Projekttyper i dialogrutan Nytt projekt klickar du på Visual Basic.
I fönstret Mallar klickar du på Konsolprogram.
I rutan Namn skriver du LinqDataManipulationApp.
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
Högerklicka på Referenser i Solution Explorer och klicka sedan på Lägg till referens.
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.
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
På Projekt-menyn klickar du på Lägg till befintligt objekt.
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
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()
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
Skapa en ny
Customer
genom att lägga till följande kod tidigareConsole.ReadLine
iSub 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
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.
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
Infoga följande kod precis ovanför
Console.ReadLine
:db.SubmitChanges()
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
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
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.