Exemplarische Vorgehensweise: Einfaches Objektmodell und Abfrage (Visual Basic)
Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-Szenario für „LINQ to SQL“ mit minimaler Komplexität bereit. Sie erstellen eine Entitätsklasse, die die Customers-Tabelle in der Beispieldatenbank Northwind modelliert. Sie erstellen dann eine einfache Abfrage, um Kunden aus London aufzulisten.
Diese exemplarische Vorgehensweise ist codeorientiert, um LINQ to SQL-Konzepte zu verdeutlichen. Normalerweise würden Sie den objektrelationalen Designer verwenden, um das Objektmodell zu erstellen.
Hinweis
Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.
Diese exemplarische Vorgehensweise wurde mithilfe von Visual Basic-Entwicklungseinstellungen geschrieben.
Voraussetzungen
Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest") als Speicherort für Dateien. Erstellen Sie diesen Ordner, bevor Sie die exemplarische Vorgehensweise starten.
Für dieses Beispiel wird die Beispieldatenbank Northwind benötigt. Befindet sich diese Datenbank nicht auf Ihrem Entwicklungscomputer, können Sie diese von der Microsoft Downloadsite herunterladen. Anweisungen hierzu finden Sie unter Herunterladen von Beispieldatenbanken. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei in den Ordner c:\linqtest.
Übersicht
Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:
Erstellen einer LINQ to SQL-Projektmappe in Visual Studio
Zuordnen einer Datenbanktabelle zu einer Klasse.
Festlegen von Eigenschaften für die Klasse, um Datenbankspalten darzustellen.
Herstellen einer Verbindung zur Beispieldatenbank Northwind.
Erstellen einer einfachen Abfrage der Datenbank.
Ausführen der Abfrage und Prüfen der Ergebnisse
Erstellen einer LINQ to SQL-Lösung
In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Projektmappe, die die erforderlichen Verweise zur Erstellung und Ausführung 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 des Dialogfelds Neues Projekt auf Visual Basic.
Klicken Sie im Bereich Vorlagen auf Konsolenanwendung.
Geben Sie im Feld Name die Zeichenfolge LinqConsoleApp ein.
Klicken Sie auf OK.
Hinzufügen von LINQ-Verweisen und Anweisungen
Diese exemplarische Vorgehensweise verwendet Assemblys, die im Projekt u. U. nicht standardmäßig installiert sind. Wird System.Data.Linq
in Ihrem Projekt nicht als Verweis aufgeführt (klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen, und erweitern Sie den Knoten Verweise), fügen Sie diesen wie nachfolgend beschrieben hinzu.
So 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, auf die System.Data.Linq-Assembly und dann auf OK.
Dem Projekt wird die Assembly hinzugefügt.
Klicken Sie im Dialogfeld Verweis hinzufügen auf .NET, klicken Sie dann auf System.Windows.Forms und dann auf OK.
Dem Projekt wird diese Assembly, die das Meldungsfeld in der exemplarischen Vorgehensweise unterstützt, hinzugefügt.
Fügen Sie die folgenden Direktiven oberhalb von
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 diese einer Datenbanktabelle zu. Eine solche Klasse wird Entitätsklasse genannt. 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 weisen diese einer Datenbanktabelle zu
Geben Sie den folgenden Code in Module1.vb direkt oberhalb von
Sub Main
ein, oder fügen Sie ihn ein:<Table(Name:="Customers")> _ Public Class Customer End Class
Festlegen von Eigenschaften für die Klasse, um Datenbankspalten darzustellen
In diesem Schritt erledigen Sie mehrere Aufgaben.
Sie verwenden das ColumnAttribute-Attribut, um die
CustomerID
-Eigenschaft und dieCity
-Eigenschaft der Entitätsklasse für die Darstellung von Spalten in der Datenbanktabelle festzulegen.Sie legen die
CustomerID
-Eigenschaft zur Darstellung einer Primärschlüsselspalte in der Datenbank fest.Sie legen
_CustomerID
- und_City
-Felder für den privaten Speicher fest. LINQ to SQL kann Werte dann direkt speichern und abrufen, statt öffentliche Zugriffsmethoden zu verwenden, die möglicherweise Geschäftslogik umfassen.
So stellen Sie Eigenschaften von zwei Datenbankspalten dar
Geben Sie den folgenden Code in Module1.vb direkt vor
End Class
ein, oder fügen Sie ihn ein: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
Herstellen einer Verbindung zur Beispieldatenbank Northwind
In diesem Schritt verwenden Sie ein DataContext-Objekt zur Einrichtung einer Verbindung zwischen Ihren codebasierten Datenstrukturen und der Datenbank selbst. Der DataContext ist der Hauptkanal, durch den Sie Objekte von der Datenbank abrufen und Änderungen übergeben.
Sie deklarieren außerdem eine Table(Of Customer)
als logische, typisierte Tabelle für Ihre Abfragen der Customers-Tabelle in der Datenbank. Die Erstellung und Ausführung dieser Abfragen erfolgt später.
So definieren Sie die Datenbankverbindung
Geben Sie den folgenden Code in die
Sub Main
-Methode ein, oder fügen Sie ihn ein:Beachten Sie, dass die Datei
northwnd.mdf
im Ordner linqtest angenommen wird. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter oben in dieser exemplarischen Vorgehensweise.' 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 Customers-Datenbanktabelle aus London stammen. Im Abfragecode in diesem Schritt wird nur die Abfrage beschrieben. Die Abfrage wird nicht ausgeführt. Dieser Ansatz wird als verzögerte Ausführung bezeichnet. Weitere Informationen finden Sie unter Introduction to LINQ queries (C#) (Einführung in LINQ-Abfragen (C#)).
Sie erzeugen auch eine Protokollausgabe, um die von LINQ to SQL erzeugten SQL-Befehle anzuzeigen. Diese Protokolllierungsfunktion (die Log verwendet), eignet sich für das Debugging. Sie stellt außerdem sicher, dass die an die Datenbank übergebenen Befehle Ihre Abfrage genau wiedergeben.
So erstellen Sie eine einfache Abfrage
Geben Sie den folgenden Code in die
Sub Main
-Methode nach derTable(Of Customer)
-Deklaration ein, oder fügen Sie ihn 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 aus. Die in den vorherigen Schritten erstellten Abfrageausdrücke werden erst ausgewertet, wenn die Ergebnisse benötigt werden. Wenn Sie die For Each
-Iteration beginnen, wird ein SQL-Befehl in der Datenbank ausgeführt, und Objekte werden erstellt.
So führen Sie die Abfrage aus
Geben Sie den folgenden Code am Ende der
Sub Main
-Methode (nach der Abfragebeschreibung) ein, oder fügen Sie ihn ein:' 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 die Anwendung einen Laufzeitfehler generiert, lesen Sie den Abschnitt zur Problembehandlung unter Lernen durch exemplarische Vorgehensweisen.
Das Meldungsfeld zeigt eine Liste von sechs Kunden an. Das Konsolenfenster zeigt den generierten SQL-Code an.
Klicken Sie auf OK, um das Meldungsfeld zu schließen.
Die Anwendung wird geschlossen.
Klicken Sie im Menü Datei auf Alle speichern.
Sie benötigen diese Anwendung, wenn Sie mit der nächsten exemplarischen Vorgehensweise fortfahren.
Nächste Schritte
Das Thema Exemplarische Vorgehensweise: Beziehungsübergreifendes Abfragen (Visual Basic) beginnt an der Stelle, an der diese exemplarischen Vorgehensweise endet. Die exemplarische Vorgehensweise zu beziehungsübergreifenden Abfragen zeigt, wie LINQ to SQL tabellenübergreifende Abfragen ausführt, ähnlich wie Joins in einer relationalen Datenbank.
Wenn Sie die exemplarische Vorgehensweise zu beziehungsübergreifenden Abfragen absolvieren möchten, stellen Sie sicher, dass Sie die gerade erstellte Lösung speichern, da diese benötigt wird.