Freigeben über


Exemplarische Vorgehensweise: Einfaches Objektmodell und Abfrage (Visual Basic)

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

  1. Klicken Sie im Menü Datei auf Neues Projekt.

  2. Klicken Sie im Bereich Projekttypen im Dialogfeld "Neues Projekt " auf Visual Basic.

  3. Klicken Sie im Bereich "Vorlagen " auf "Konsolenanwendung".

  4. Geben Sie im Feld "Name" den Namen "LinqConsoleApp" ein.

  5. 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

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.

  2. 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.

  3. 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.

  4. Fügen Sie die folgenden Direktiven oben Module1hinzu:

    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 Mainein:

    <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- und City-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 ihn Table(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

  1. 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)
    
  2. 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.

  3. Klicken Sie auf 'OK ', um das Meldungsfeld zu schließen.

    Die Anwendung wird geschlossen.

  4. 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.

Siehe auch