Overzicht: Gegevens bewerken (Visual Basic)
Deze procedure biedt een fundamenteel end-to-end LINQ voor SQL-scenario voor het toevoegen, wijzigen en verwijderen van gegevens in een database. U gebruikt een kopie van de northwind-voorbeelddatabase om een klant toe te voegen, de naam van een klant te wijzigen en een order te verwijderen.
Notitie
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.
Deze procedure is geschreven met behulp van Visual Basic Development Instellingen.
Vereisten
Voor dit scenario is het volgende vereist:
In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest2') voor het opslaan van bestanden. Maak deze map voordat u met de procedure begint.
De Northwind-voorbeelddatabase.
Als u deze database niet op uw ontwikkelcomputer hebt, kunt u deze downloaden van de Microsoft-downloadsite. Zie Voorbeelddatabases downloaden voor instructies. Nadat u de database hebt gedownload, kopieert u het northwnd.mdf bestand naar de map c:\linqtest2.
Een Visual Basic-codebestand dat is gegenereerd op basis van de Northwind-database.
U kunt dit bestand genereren met behulp van de Object Relational Designer of het hulpprogramma SQLMetal. Deze procedure is geschreven met behulp van het hulpprogramma SQLMetal met de volgende opdrachtregel:
sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize
Zie SqlMetal.exe (hulpprogramma voor het genereren van code) voor meer informatie.
Overzicht
Deze procedure bestaat uit zes hoofdtaken:
Het maken van de LINQ naar de SQL-oplossing in Visual Studio.
Voeg het databasecodebestand toe aan het project.
Een nieuw klantobject maken.
De naam van de contactpersoon van een klant wijzigen.
Een bestelling verwijderen.
Deze wijzigingen verzenden naar de Northwind-database.
Een LINQ maken naar SQL-oplossing
In deze eerste taak maakt u een Visual Studio-oplossing die de benodigde verwijzingen bevat om een LINQ te bouwen en uit te voeren naar een SQL-project.
Een LINQ naar SQL-oplossing maken
Klik in het menu Visual Studio-bestand op Nieuw project.
Klik in het deelvenster Projecttypen in het dialoogvenster Nieuw project op Visual Basic.
Klik in het deelvenster Sjablonen op Consoletoepassing.
Typ LinqDataManipulationApp in het vak Naam.
Klik op OK.
LINQ-verwijzingen en -instructies toevoegen
In dit scenario worden assembly's gebruikt die mogelijk niet standaard in uw project worden geïnstalleerd. Als System.Data.Linq
dit niet wordt vermeld als verwijzing in uw project (klik op Alle bestanden weergeven in Solution Explorer en vouw het knooppunt Verwijzingen uit), voegt u dit toe, zoals wordt uitgelegd in de volgende stappen.
System.Data.Linq toevoegen
Klik in Solution Explorer met de rechtermuisknop op Verwijzingen en klik vervolgens op Verwijzing toevoegen.
Klik in het dialoogvenster Verwijzing toevoegen op .NET, klik op de assembly System.Data.Linq en klik vervolgens op OK.
De assembly wordt toegevoegd aan het project.
Voeg in de code-editor de volgende instructies boven Module1 toe:
Imports System.Data.Linq Imports System.Data.Linq.Mapping
Het Northwind-codebestand toevoegen aan het project
Bij deze stappen wordt ervan uitgegaan dat u het hulpprogramma SQLMetal hebt gebruikt om een codebestand te genereren uit de Northwind-voorbeelddatabase. Zie de sectie Vereisten eerder in dit scenario voor meer informatie.
Het northwind-codebestand toevoegen aan het project
Klik in het menu Project op Bestaand item toevoegen.
Navigeer in het dialoogvenster Bestaand item toevoegen naar c:\linqtest2\northwind.vb en klik vervolgens op Toevoegen.
Het northwind.vb-bestand wordt toegevoegd aan het project.
De database-Verbinding maken ion instellen
Test eerst de verbinding met de database. Houd er rekening mee dat de naam van de database, Northwnd, geen i-teken heeft. Als u fouten genereert in de volgende stappen, bekijkt u het bestand northwind.vb om te bepalen hoe de gedeeltelijke klasse Northwind is gespeld.
De databaseverbinding instellen en testen
Typ of plak de volgende code in
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()
Druk op F5 om de toepassing op dit moment te testen.
Er wordt een consolevenster geopend.
Sluit de toepassing door in het consolevenster op Enter te drukken of door te klikken op Foutopsporing stoppen in het menu Foutopsporing in Visual Studio.
Een nieuwe entiteit maken
Het maken van een nieuwe entiteit is eenvoudig. U kunt objecten (zoals Customer
) maken met behulp van het New
trefwoord.
In deze en de volgende secties gaat u alleen wijzigingen aanbrengen in de lokale cache. Er worden geen wijzigingen naar de database verzonden totdat u het einde van deze procedure aanroept SubmitChanges .
Een nieuw klantentiteitsobject toevoegen
Maak een nieuwe
Customer
door de volgende code toe te voegen vóórConsole.ReadLine
inSub 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
Druk op F5 om fouten in de oplossing op te sporen.
De resultaten die worden weergegeven in het consolevenster zijn als volgt:
Customers matching CA before insert:
Customer ID: CACTU
Customer ID: RICAR
De nieuwe rij wordt niet weergegeven in de resultaten. De nieuwe gegevens zijn nog niet naar de database verzonden.
Druk op Enter in het consolevenster om de foutopsporing te stoppen.
Een entiteit bijwerken
In de volgende stappen haalt u een Customer
object op en wijzigt u een van de eigenschappen.
De naam van een klant wijzigen
Voeg de volgende code hierboven
Console.ReadLine()
toe: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"
Een entiteit verwijderen
Met hetzelfde klantobject kunt u de eerste bestelling verwijderen.
De volgende code laat zien hoe u relaties tussen rijen verbreekt en hoe u een rij uit de database verwijdert.
Een rij verwijderen
Voeg de volgende code net boven
Console.ReadLine()
toe:' 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)
Wijzigingen verzenden naar de database
De laatste stap die nodig is voor het maken, bijwerken en verwijderen van objecten is het daadwerkelijk indienen van de wijzigingen in de database. Zonder deze stap zijn uw wijzigingen alleen lokaal en worden ze niet weergegeven in queryresultaten.
Wijzigingen verzenden naar de database
Voeg de volgende code net boven
Console.ReadLine
in:db.SubmitChanges()
Voeg de volgende code (na
SubmitChanges
) in om de voor- en naeffecten van het indienen van de wijzigingen weer te geven: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
Druk op F5 om fouten in de oplossing op te sporen.
Het consolevenster wordt als volgt weergegeven:
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
Druk op Enter in het consolevenster om de foutopsporing te stoppen.
Notitie
Nadat u de nieuwe klant hebt toegevoegd door de wijzigingen in te dienen, kunt u deze oplossing niet meer als zodanig uitvoeren, omdat u dezelfde klant niet opnieuw kunt toevoegen als is. Als u de oplossing opnieuw wilt uitvoeren, wijzigt u de waarde van de klant-id die moet worden toegevoegd.