Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Schritt-für-Schritt-Anleitung bietet grundlegendes End-to-End-LINQ to SQL-Szenario mit minimaler Komplexität. Sie erstellen eine Entitätsklasse, die die Tabelle "Customers" in der Northwind-Beispieldatenbank modelliert. Anschließend erstellen Sie eine einfache Abfrage zum Auflisten von Kunden, die sich in London befinden.
Diese exemplarische Vorgehensweise ist codeorientiert, um LINQ to SQL-Konzepte zu verdeutlichen. Normalerweise würden Sie den objektrelationalen Designer verwenden, um Ihr Objektmodell zu erstellen.
Hinweis
Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.
Diese Anleitung wurde unter Verwendung der Visual Basic Entwicklungseinstellungen erstellt.
Voraussetzungen
In dieser exemplarischen Vorgehensweise wird ein dedizierter Ordner ("c:\linqtest") zum Speichern von Dateien verwendet. Erstellen Sie diesen Ordner, bevor Sie mit der Anleitung beginnen.
Für dieses Beispiel wird die Beispieldatenbank Northwind benötigt. Wenn Sie diese Datenbank nicht auf Ihrem Entwicklungscomputer haben, können Sie sie von der Microsoft-Downloadwebsite herunterladen. Anweisungen finden Sie unter Herunterladen von Beispieldatenbanken. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei in den Ordner "c:\linqtest".
Überblick
Diese exemplarische Vorgehensweise besteht aus sechs Hauptaufgaben:
Erstellen einer LINQ to SQL-Lösung in Visual Studio.
Zuordnen einer Klasse zu einer Datenbanktabelle.
Entwerfen von Eigenschaften für die Klasse, die Datenbankspalten darstellen sollen.
Angeben der Verbindung mit der Northwind-Datenbank.
Erstellen einer einfachen Abfrage, die für die Datenbank ausgeführt werden soll.
Ausführen der Abfrage und Beobachten der Ergebnisse.
Erstellen einer LINQ to SQL-Lösung
In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Projektmappe, die die erforderlichen Verweise zum Erstellen und Ausführen eines LINQ to SQL-Projekts enthält.
So erstellen Sie eine LINQ to SQL-Lösung
Klicken Sie im Menü Datei auf Neues Projekt.
Klicken Sie im Bereich Projekttypen im Dialogfeld "Neues Projekt " auf Visual Basic.
Klicken Sie im Bereich "Vorlagen " auf "Konsolenanwendung".
Geben Sie im Feld "Name" den Namen "LinqConsoleApp" ein.
Klicke auf OK.
Hinzufügen von LINQ-Verweisen und Direktiven
In dieser exemplarischen Vorgehensweise werden Assemblys verwendet, die möglicherweise nicht standardmäßig in Ihrem Projekt installiert werden. Wenn System.Data.Linq
nicht als Verweis in Ihrem Projekt aufgeführt ist (klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen und erweitern Sie den Knoten Verweise), fügen Sie ihn hinzu, wie in den folgenden Schritten beschrieben.
Fügen Sie System.Data.Linq hinzu
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.
Klicken Sie im Dialogfeld "Verweis hinzufügen " auf .NET, klicken Sie auf die Assembly "System.Data.Linq" und dann auf "OK".
Die Baugruppe wird dem Projekt hinzugefügt.
Klicken Sie auch im Dialogfeld " Verweis hinzufügen " auf .NET, scrollen Sie zu "System.Windows.Forms", und klicken Sie dann auf "OK".
Diese Assembly, die das Meldungsfeld in der exemplarischen Vorgehensweise unterstützt, wird dem Projekt hinzugefügt.
Fügen Sie die folgenden Direktiven oben
Module1
hinzu:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Zuordnen einer Klasse zu einer Datenbanktabelle
In diesem Schritt erstellen Sie eine Klasse und ordnen sie einer Datenbanktabelle zu. Eine solche Klasse wird als Entitätsklasse bezeichnet. Beachten Sie, dass die Zuordnung durch Hinzufügen des TableAttribute Attributs erreicht wird. Die Name Eigenschaft gibt den Namen der Tabelle in der Datenbank an.
So erstellen Sie eine Entitätsklasse und ordnen sie einer Datenbanktabelle zu
Geben Sie den folgenden Code ein, oder fügen Sie ihn in Module1.vb unmittelbar oben
Sub Main
ein:<Table(Name:="Customers")> _ Public Class Customer End Class
Entwerfen von Eigenschaften für die Klasse zum Darstellen von Datenbankspalten
In diesem Schritt führen Sie mehrere Aufgaben aus.
Sie verwenden das ColumnAttribute-Attribut, um die
CustomerID
- undCity
-Eigenschaften der Entitätsklasse als darstellende Spalten in der Datenbanktabelle festzulegen.Sie legen die
CustomerID
Eigenschaft als Primärschlüsselspalte in der Datenbank fest.Sie bestimmen
_CustomerID
und_City
Felder für den privaten Speicher. LINQ to SQL kann dann Werte direkt speichern und abrufen, anstatt öffentliche Accessoren zu verwenden, die Geschäftslogik enthalten können.
So stellen Sie Merkmale von zwei Datenbankspalten dar
Geben Sie den folgenden Code direkt vor Module1.vb ein, oder fügen Sie ihn ein
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
Angeben der Verbindung mit der Northwind-Datenbank
In diesem Schritt verwenden Sie ein DataContext Objekt, um eine Verbindung zwischen den codebasierten Datenstrukturen und der Datenbank selbst herzustellen. Dies DataContext ist der Hauptkanal, über den Sie Objekte aus der Datenbank abrufen und Änderungen übermitteln.
Außerdem deklarieren Sie einen Table(Of Customer)
, der als logische, typisierte Tabelle für Ihre Abfragen gegen die Tabelle "Kunden" in der Datenbank fungiert. Sie erstellen und führen diese Abfragen in späteren Schritten aus.
So legen Sie die Datenbankverbindung fest
Geben Sie den folgenden Code in die
Sub Main
Methode ein, oder fügen Sie ihn ein.Beachten Sie, dass die
northwnd.mdf
Datei im Ordner "linqtest" verwendet wird. Weitere Informationen finden Sie im Abschnitt "Voraussetzungen" weiter oben in diesem exemplarischen Leitfaden.' 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)()
Erstellen einer einfachen Abfrage
In diesem Schritt erstellen Sie eine Abfrage, um zu ermitteln, welche Kunden in der Tabelle "Kunden" der Datenbank sich in London befinden. Der Abfragecode in diesem Schritt beschreibt nur die Abfrage. Die Abfrage wird nicht ausgeführt. Dieser Ansatz wird als verzögerte Ausführung bezeichnet. Weitere Informationen finden Sie in der Einführung in LINQ-Abfragen (C#).
Außerdem erstellen Sie eine Protokollausgabe, um die SQL-Befehle anzuzeigen, die LINQ to SQL generiert. Dieses Protokollierungsfeature (das Logverwendet ) ist hilfreich beim Debuggen und bei der Bestimmung, dass die Befehle, die an die Datenbank gesendet werden, Ihre Abfrage genau darstellen.
So erstellen Sie eine einfache Abfrage
Geben Sie den folgenden Code nach der Deklaration in die
Sub Main
Methode ein, oder fügen Sie ihnTable(Of Customer)
ein:' 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
Ausführen der Abfrage
In diesem Schritt führen Sie die Abfrage tatsächlich aus. Die abfrageausdrücke, die Sie in den vorherigen Schritten erstellt haben, werden erst ausgewertet, wenn die Ergebnisse erforderlich sind. Wenn Sie mit der For Each
Iteration beginnen, wird ein SQL-Befehl für die Datenbank ausgeführt, und objekte werden materialisiert.
So führen Sie die Abfrage aus
Geben Sie den folgenden Code am Ende der
Sub Main
Methode ein oder fügen Sie ihn ein (nach der Abfragebeschreibung):' 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)
Drücken Sie F5, um die Anwendung zu debuggen.
Hinweis
Wenn Ihre Anwendung einen Laufzeitfehler generiert, lesen Sie den Abschnitt "Problembehandlung durch exemplarische Vorgehensweisen".
Das Meldungsfeld zeigt eine Liste von sechs Kunden an. Im Konsolenfenster wird der generierte SQL-Code angezeigt.
Klicken Sie auf 'OK ', um das Meldungsfeld zu schließen.
Die Anwendung wird geschlossen.
Wählen Sie im Menü DateiAlle speichern aus.
Sie benötigen diese Anwendung, wenn Sie mit der nächsten exemplarischen Vorgehensweise fortfahren.
Nächste Schritte
Das Thema "Walkthrough: Querying Across Relationships (Visual Basic)" wird fortgesetzt, wo diese exemplarische Vorgehensweise endet. Die exemplarische Vorgehensweise zum Abfragen über Beziehungen veranschaulicht, wie LINQ to SQL tabellenübergreifend abfragen kann, ähnlich wie Verknüpfungen in einer relationalen Datenbank.
Wenn Sie die exemplarische Vorgehensweise zum Abfragen über Beziehungen ausführen möchten, müssen Sie die Lösung für die exemplarische Vorgehensweise speichern, die Sie soeben abgeschlossen haben. Dies ist eine Voraussetzung.