Overzicht: Gegevens bewerken (C#)
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.
Dit scenario is geschreven met behulp van Visual C# Development Instellingen.
Vereisten
Voor dit scenario is het volgende vereist:
In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest6') 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:\linqtest6.
Een C#-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:\linqtest6\northwind.cs" /language:csharp "C:\linqtest6\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
Wijs in het menu Visual Studio-bestand de optie Nieuw aan en klik vervolgens op Project.
Klik in het deelvenster Projecttypen in het dialoogvenster Nieuw project op Visual C#.
Klik in het deelvenster Sjablonen op Consoletoepassing.
Typ LinqDataManipulationApp in het vak Naam.
Controleer in het vak Locatie waar u uw projectbestanden wilt opslaan.
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 niet wordt vermeld als referentie in uw project, 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 bovenaan Program.cs de volgende instructies toe:
using System.Data.Linq; using 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:\linqtest6\northwind.cs en klik vervolgens op Toevoegen.
Het bestand northwind.cs wordt toegevoegd aan het project.
De database-Verbinding maken ion instellen
Test eerst de verbinding met de database. Houd er vooral rekening mee dat de database Northwnd geen i-teken heeft. Als u fouten genereert in de volgende stappen, controleert u het northwind.cs bestand om te bepalen hoe de gedeeltelijke klasse Northwind is gespeld.
De databaseverbinding instellen en testen
Typ of plak de volgende code in de
Main
methode in de klasse Program:// Use the following connection string. Northwnd db = new Northwnd(@"c:\linqtest6\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.
U kunt de toepassing sluiten 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();
in deMain
methode:// 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); }
Druk op F5 om fouten in de oplossing op te sporen.
Druk op Enter in het consolevenster om de foutopsporing te stoppen en door te gaan met de procedure.
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:// 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";
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. Voeg de volgende code toe voordat Console.ReadLine
u kunt zien hoe objecten kunnen worden verwijderd:
Een rij verwijderen
Voeg de volgende code net boven
Console.ReadLine();
toe:// 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);
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("\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); }
Druk op F5 om fouten in de oplossing op te sporen.
Druk op Enter in het consolevenster om de toepassing te sluiten.
Notitie
Nadat u de nieuwe klant hebt toegevoegd door de wijzigingen in te dienen, kunt u deze oplossing niet meer als zodanig uitvoeren. Als u de oplossing opnieuw wilt uitvoeren, wijzigt u de naam van de klant en de klant-id die moet worden toegevoegd.