(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Exemplarische Vorgehensweise: Einfaches Objektmodell und Abfrage (C#)

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. In der Regel verwenden Sie Objektrelationaler Designer zum Erstellen des Objektmodells.  

HinweisHinweis

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 Visual Studio-Einstellungen.

Diese exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben.

  • Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest5") 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 dazu finden Sie unter Herunterladen von Beispieldatenbanken. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei in den Ordner c:\linqtest5.

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:

  • Erstellen einer LINQ to SQL-Lösung 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 Prüfen der Ergebnisse.

In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Lösung, 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

  1. Zeigen Sie im Visual Studio-Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  2. Klicken Sie im Bereich Projekttypen des Dialogfelds Neues Projekt auf Visual C#.

  3. Klicken Sie im Bereich Vorlagen auf Konsolenanwendung.

  4. Geben Sie im Feld Name die Zeichenfolge LinqConsoleApp ein.

  5. Geben Sie im Feld Position an, wo die Projektdateien gespeichert werden sollen.

  6. Klicken Sie auf OK.

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 (erweitern Sie den Knoten Verweise im Lösungs-Explorer), fügen Sie diesen wie nachfolgend beschrieben hinzu.

So 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ügenauf .NET, klicken Sie auf die System.Data.Linq-Assembly und dann auf OK.

    Dem Projekt wird die Assembly hinzugefügt.

  3. Fügen Sie die folgenden Direktiven am oberen Rand von Program.cs hinzu:

    
    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    
    
    

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 direkt oberhalb der Program-Klassendeklaration in Program.cs ein, oder fügen Sie ihn ein:

    
    [Table(Name = "Customers")]
    public class Customer
    {
    }
    
    
    

In diesem Schritt erledigen Sie mehrere Aufgaben.

  • Sie verwenden das ColumnAttribute-Attribut, um die CustomerID-Eigenschaft und die City-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 Accessoren zu verwenden, die möglicherweise Geschäftslogik umfassen.

So stellen Sie Eigenschaften von zwei Datenbankspalten dar

  • Geben Sie den folgenden Code in die geschweiften Klammern der Customer-Klasse in Program.cs 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;
        }
    }
    
    
    

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<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 Main-Methode ein, oder fügen Sie ihn ein:

    Beachten Sie, dass die Datei northwnd.mdf im Ordner linqtest5 angenommen wird. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter vorn in dieser exemplarischen Vorgehensweise.

    
    // 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>();
    
    
    

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 Einführung in LINQ-Abfragen (C#).

Sie erzeugen auch eine Protokollausgabe, um die SQL-Befehle anzuzeigen, die LINQ to SQL erzeugt. 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 Main-Methode nach der Table<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;
    
    
    

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 foreach-Iteration beginnen, wird ein SQL-Befehl in der Datenbank ausgeführt, und Objekte werden erstellt.

So führen Sie die Abfrage aus

  1. 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();
    
    
    
  2. Drücken Sie F5, um die Anwendung zu debuggen.

    Hinweis Hinweis

    Wenn die Anwendung einen Laufzeitfehler erzeugt, lesen Sie den Abschnitt zur Problembehandlung unter Lernen mit exemplarischen Vorgehensweisen.

    Die Abfrageergebnisse im Konsolenfenster werden wie folgt angezeigt:

    ID=AROUT, City=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Drücken Sie die EINGABETASTE im Konsolenfenster, um die Anwendung zu schließen.

Dieses Exemplarische Vorgehensweise: Beziehungsübergreifende Abfragen (C#)-Thema schließt sich an diese exemplarische Vorgehensweise an. 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.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft