Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze handleiding biedt een fundamenteel end-to-end LINQ naar 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.
Opmerking
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 IDEvoor meer informatie.
Deze handleiding is geschreven met behulp van Visual Basic ontwikkelingsinstellingen.
Vereiste voorwaarden
Voor deze stapsgewijze uitleg heeft u het volgende nodig:
In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest2') voor het opslaan van bestanden. Maak deze map voordat u met de rondleiding 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 handleiding is opgesteld met behulp van de SQLMetal tool 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 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.
Het maken van een LINQ-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.
Om een LINQ naar SQL-oplossing te 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 het gedeelte Vereisten eerder in deze walkthrough voor meer informatie.
Het Northwind-codebestand aan het project toevoegen
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 databaseverbinding 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 op Stoppen met debuggen te klikken in het Debug menu van 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 aan het einde van deze handleiding SubmitChanges oproept.
Een nieuw klantentiteitsobject toevoegen
Maak een nieuwe
Customerdoor de volgende code toe te voegen vóórConsole.ReadLineinSub 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) NextDruk 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: CACTUCustomer ID: RICARDe 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.ReadLinein: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) NextDruk 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: RICARDruk op Enter in het consolevenster om de foutopsporing te stoppen.
Opmerking
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.