Overzicht: Eenvoudig objectmodel en -query (Visual Basic)
Deze procedure biedt een fundamenteel end-to-end LINQ naar SQL-scenario met minimale complexiteit. U maakt een entiteitsklasse die de tabel Klanten modelleert in de voorbeelddatabase Northwind. Vervolgens maakt u een eenvoudige query om klanten weer te geven die zich in Londen bevinden.
Deze procedure is op code gebaseerd om LINQ aan SQL-concepten te laten zien. Normaal gesproken gebruikt u de Object Relational Designer om uw objectmodel te maken.
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
In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest') voor het opslaan van bestanden. Maak deze map voordat u met de procedure begint.
Voor dit scenario is de Northwind-voorbeelddatabase vereist. 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 bestand naar de map c:\linqtest.
Overzicht
Deze procedure bestaat uit zes hoofdtaken:
Een LINQ maken naar een SQL-oplossing in Visual Studio.
Een klasse toewijzen aan een databasetabel.
Eigenschappen in de klasse aanwijzen om databasekolommen weer te geven.
De verbinding met de Northwind-database opgeven.
Een eenvoudige query maken om uit te voeren op de database.
De query uitvoeren en de resultaten observeren.
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 Bestand op Nieuw project.
Klik in het deelvenster Projecttypen van het dialoogvenster Nieuw project op Visual Basic.
Klik in het deelvenster Sjablonen op Consoletoepassing.
Typ LinqConsoleApp 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.
Klik ook in het dialoogvenster Verwijzing toevoegen op .NET, schuif naar system.Windows.Forms en klik vervolgens op OK.
Deze assembly, die het berichtvak in het scenario ondersteunt, wordt toegevoegd aan het project.
Voeg de volgende instructies hierboven
Module1
toe:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Een klasse toewijzen aan een databasetabel
In deze stap maakt u een klasse en wijst u deze toe aan een databasetabel. Een dergelijke klasse wordt een entiteitsklasse aangeduid. Houd er rekening mee dat de toewijzing wordt uitgevoerd door alleen het TableAttribute kenmerk toe te voegen. De Name eigenschap geeft de naam van de tabel in de database op.
Een entiteitsklasse maken en toewijzen aan een databasetabel
Typ of plak de volgende code in Module1.vb direct erboven
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
Eigenschappen voor de klasse toewijzen om databasekolommen weer te geven
In deze stap voert u verschillende taken uit.
U gebruikt het ColumnAttribute kenmerk voor het aanwijzen
CustomerID
enCity
eigenschappen van de entiteitsklasse als het weergeven van kolommen in de databasetabel.U wijst de
CustomerID
eigenschap aan als een primaire-sleutelkolom in de database.U wijst en
_City
velden voor privéopslag aan_CustomerID
. LINQ naar SQL kan vervolgens waarden rechtstreeks opslaan en ophalen, in plaats van openbare accessors te gebruiken die bedrijfslogica kunnen bevatten.
Kenmerken van twee databasekolommen weergeven
Typ of plak de volgende code in Module1.vb vlak voor
End Class
:Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
De Verbinding maken ion opgeven voor de Northwind-database
In deze stap gebruikt u een DataContext object om een verbinding tot stand te brengen tussen uw op code gebaseerde gegevensstructuren en de database zelf. Het DataContext is het hoofdkanaal waarmee u objecten ophaalt uit de database en wijzigingen verzendt.
U declareert ook een Table(Of Customer)
om te fungeren als de logische, getypte tabel voor uw query's op basis van de tabel Klanten in de database. U maakt en voert deze query's uit in latere stappen.
De databaseverbinding opgeven
Typ of plak de volgende code in de
Sub Main
methode.Houd er rekening mee dat het
northwnd.mdf
bestand wordt verondersteld in de linqtest-map te staan. Zie de sectie Vereisten eerder in dit scenario voor meer informatie.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
Een eenvoudige query maken
In deze stap maakt u een query om te vinden welke klanten in de tabel Klanten zich in Londen bevinden. De querycode in deze stap beschrijft alleen de query. Het wordt niet uitgevoerd. Deze benadering wordt de uitgestelde uitvoering genoemd. Zie Inleiding tot LINQ-query's (C#) voor meer informatie.
U produceert ook een logboekuitvoer om de SQL-opdrachten weer te geven die LINQ naar SQL genereert. Deze functie voor logboekregistratie (die gebruikmaakt) Logis handig bij het opsporen van fouten en bij het bepalen of de opdrachten die naar de database worden verzonden, uw query nauwkeurig vertegenwoordigen.
Een eenvoudige query maken
Typ of plak de volgende code in de
Sub Main
methode na deTable(Of Customer)
declaratie:' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
De query uitvoeren
In deze stap voert u de query daadwerkelijk uit. De query-expressies die u in de vorige stappen hebt gemaakt, worden pas geëvalueerd als de resultaten nodig zijn. Wanneer u de For Each
iteratie start, wordt een SQL-opdracht uitgevoerd voor de database en worden objecten gerealiseerd.
De query uitvoeren
Typ of plak de volgende code aan het einde van de
Sub Main
methode (na de querybeschrijving):' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
Druk op F5 om fouten in de toepassing op te sporen.
Notitie
Als uw toepassing een runtimefout genereert, raadpleegt u de sectie Probleemoplossing van Learning by Walkthroughs.
In het berichtvak wordt een lijst met zes klanten weergegeven. In het consolevenster wordt de gegenereerde SQL-code weergegeven.
Klik op OK om het berichtvak te sluiten.
De toepassing wordt gesloten.
Klik in het menu Bestand op Alles opslaan.
U hebt deze toepassing nodig als u doorgaat met de volgende procedure.
Volgende stappen
Het overzicht: Query's uitvoeren op verschillende relaties (Visual Basic) gaat verder waar dit scenario eindigt. In het overzicht query's over relaties ziet u hoe LINQ naar SQL query's kan uitvoeren in tabellen, vergelijkbaar met joins in een relationele database.
Als u het overzicht query's tussen relaties wilt uitvoeren, moet u ervoor zorgen dat u de oplossing opslaat voor het scenario dat u zojuist hebt voltooid. Dit is een vereiste.