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 exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben.
Voraussetzungen
In dieser exemplarischen Vorgehensweise wird ein dedizierter Ordner ("c:\linqtest5") 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:\linqtest5".
Ü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
Zeigen Sie im Menü " Datei" von Visual Studio auf "Neu", und klicken Sie dann auf "Projekt".
Klicken Sie im Bereich "Projekttypen " im Dialogfeld " Neues Projekt " auf "Visual C#".
Klicken Sie im Bereich "Vorlagen " auf "Konsolenanwendung".
Geben Sie im Feld "Name" den Namen "LinqConsoleApp" ein.
Überprüfen Sie im Feld "Speicherort ", wo Ihre Projektdateien gespeichert werden sollen.
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 (erweitern Sie den Knoten "Verweise " im Projektmappen-Explorer), fügen Sie ihn hinzu, wie in den folgenden Schritten erläutert.
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.
Fügen Sie oben in Program.cs die folgenden Direktiven hinzu:
using System.Data.Linq; using System.Data.Linq.Mapping;
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 Program.cs unmittelbar über der
Program
Klassendeklaration ein:[Table(Name = "Customers")] public class Customer { }
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 in Program.cs innerhalb der geschweiften Klammern für die Klasse
Customer
ein oder fügen Sie ihn ein.private string _CustomerID; [Column(IsPrimaryKey=true, Storage="_CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage="_City")] public string City { get { return this._City; } set { this._City=value; } }
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<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
Main
Methode ein, oder fügen Sie ihn ein.Beachten Sie, dass davon ausgegangen wird, dass sich die
northwnd.mdf
Datei im Ordner "linqtest5" befindet. Weitere Informationen finden Sie im Abschnitt "Voraussetzungen" weiter oben in diesem exemplarischen Leitfaden.// Use a connection string. DataContext db = new DataContext (@"c:\linqtest5\northwnd.mdf"); // Get a typed table to run queries. Table<Customer> Customers = db.GetTable<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 in die
Main
-Methode nach derTable<Customer>
-Deklaration ein, oder fügen Sie ihn ein:// Attach the log to show generated SQL. db.Log = Console.Out; // Query for customers in London. IQueryable<Customer> 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 foreach
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
Main
Methode (nach der Abfragebeschreibung) ein, oder fügen Sie ihn ein.foreach (Customer cust in custQuery) { Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City); } // Prevent console window from closing. Console.ReadLine();
Drücken Sie F5, um die Anwendung zu debuggen.
Hinweis
Wenn Ihre Anwendung einen Laufzeitfehler generiert, lesen Sie den Abschnitt "Problembehandlung durch exemplarische Vorgehensweisen".
Die Abfrageergebnisse im Konsolenfenster sollten wie folgt angezeigt werden:
ID=AROUT, City=London
ID=BSBEV, City=London
ID=CONSH, City=London
ID=EASTC, City=London
ID=NORTS, City=London
ID=SEVES, City=London
Drücken Sie die EINGABETASTE im Konsolenfenster, um die Anwendung zu schließen.
Nächste Schritte
Das Thema Exemplarische Vorgehensweise: Beziehungsübergreifendes Abfragen (C#) beginnt an der Stelle, an der diese exemplarische 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 "Übergreifende Beziehungen abfragen" 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.