Exemplarische Vorgehensweise: Erstellen eines Adventure Works Sales-Modells und einer Abfrage (C#)

Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-Szenario für LINQ-to-Entities mit minimaler Komplexität bereit. Sie werden das AdventureWorks Sales-Modell erstellen, das Entitäten und Zuordnungen enthält, die auf den Tabellen Contact, Address, Product, SalesOrderHeader und SalesOrderDetail der AdventureWorks-Beispieldatenbank beruhen. Sie erstellen dann eine einfache Abfrage, die alle roten Produkte im AdventureWorks-Inventar zurückgibt.

Erforderliche Komponenten

Für dieses Beispiel wird die AdventureWorks-Beispieldatenbank benötigt. Wenn Sie diese Datenbank nicht auf dem Entwicklungscomputer gespeichert haben, können Sie sie von der Microsoft SQL Server Community & Samples-Seite auf der CodePlex-Site herunterladen.

Übersicht

Diese exemplarische Vorgehensweise besteht aus vier Hauptaufgaben:

  • Erstellen einer LINQ-to-Entities-Projektmappe in Visual Studio 2008

  • Erstellen des AdventureWorks Sales-Modells

  • Erstellen einer einfachen Abfrage des Sales-Modells

  • Ausführen der Abfrage und Prüfen der Ergebnisse

Erstellen einer LINQ to Entities-Projektmappe

In dieser ersten Aufgabe erstellen Sie eine Visual Studio-Projektmappe, die die erforderlichen Verweise zur Erstellung und Ausführung eines LINQ to Entities-Projekts enthält.

So erstellen Sie eine LINQ to Entities-Projektmappe in C#

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

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

  3. Wählen Sie im Dropdownmenü .NET Framework 3.5 aus.

  4. Klicken Sie im Bereich Vorlagen auf Konsolenanwendung.

  5. Geben Sie im Feld NameLinqToEntitesConsoleApp ein.

  6. Wählen Sie im Feld Speicherort einen Speicherort für die Projektdateien aus, und klicken Sie dann auf OK.

  7. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, klicken Sie auf die System.Data.Entity-Assembly und dann auf OK.

  8. Fügen Sie der Quellcodedatei eine using-Direktive für den System.Data.Objects-Namespace hinzu.

Erstellen des AdventureWorks Sales-Modells

In dieser Aufgabe erstellen Sie mithilfe des Entitätsdatenmodell-Assistenten das AdventureWorks Sales-Modell und verweisen von Ihrem Projekt auf das Modell.

So erstellen Sie das AdventureWorks Sales-Modell und verweisen darauf

  1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen im Bereich Vorlagen die Option ADO.NET Entity Data Model aus. Nennen Sie das Modell AdventureWorksSalesModel, und klicken Sie dann auf Hinzufügen.

  3. Wählen Sie im Dialogfeld Auswählen des Modellinhalts die Option Aus Datenbank generieren, und klicken Sie dann auf Weiter.

  4. Wählen Sie im Fenster Wählen Sie Ihre Datenverbindung aus entweder eine bestehende AdventureWorks-Verbindung aus der Liste aus, oder erstellen Sie eine neue Verbindung mit einer SQL Server-Instanz, die über die AdventureWorks-Beispieldatenbank verfügt.

  5. Speichern Sie die Einstellungen der Entitätsverbindung in App.Config als AdventureWorksEntities, und klicken Sie dann auf Weiter.

  6. Entfernen Sie im Dialogfeld Datenbankobjekte auswählen die Markierungen aller Objekte, erweitern Sie Tabellen, und wählen Sie die folgenden Tabellenobjekte aus:

    • Address (Person)

    • Contact (Person)

    • Product (Production)

    • SalesOrderDetail (Sales)

    • SalesOrderHeader (Sales)

  7. Nennen Sie den Modellnamespace AdventureSalesWorksModel, und klicken Sie dann auf Fertig stellen.

  8. Die Ansicht Modellbrowser wird geöffnet und zeigt die Entitäten im AdventureWorks Sales-Modell an. Klicken Sie auf die Schaltfläche Speichern, und wählen Sie die Registerkarte Program.cs aus, um zurück zum Quellcode zu navigieren.

  9. Fügen Sie der Quelldatei eine using-Anweisung für AdventureWorksSalesModel hinzu.

Erstellen einer einfachen Abfrage

In diesem Schritt erstellen Sie eine Abfrage, die alle roten Produkte im AdventureWorks-Inventar zurückgibt. Die Abfragevariable speichert die Abfragebefehle nur dann, wenn die Abfrage so entwickelt wurde, dass sie eine Sequenz von Werten zurückgibt. Die tatsächliche Ausführung der Abfrage wird so lange verzögert, bis Sie die Abfragevariable in einer foreach-Schleife durchlaufen. Diese Methode wird als verzögerte Ausführung bezeichnet. Weitere Informationen finden Sie unter Abfrageausführung.

So erstellen Sie eine einfache Abfrage

  • Geben Sie den folgenden Code in die Main-Methode ein, oder fügen Sie ihn ein.
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<Product> products = AWEntities.Product;

    IQueryable<Product> query =
        from product in products
        where product.Color == "Red"
        select product;

    foreach (Product product in query)
    {
        Console.WriteLine("Name: {0}", product.Name);
        Console.WriteLine("Product number: {0}", product.ProductNumber);
        Console.WriteLine("List price: ${0}", product.ListPrice);
        Console.WriteLine("");
    }
}

//Prevent the console window from closing.
Console.WriteLine("Hit Enter...");
Console.Read();

Ausführen der Abfrage

In diesem Schritt führen Sie die Abfrage aus. Der im vorherigen Schritt erstellte Abfrageausdruck wird erst ausgewertet, wenn die Ergebnisse benötigt werden. Wenn die foreach-Iteration beginnt, wird die Abfrage des AdventureWorks Sales-Modells ausgeführt, und die Ergebnisse werden materialisiert.

So führen Sie die Abfrage aus

  1. Drücken Sie F5, um die Anwendung im Debugmodus auszuführen.

  2. Die Abfrageergebnisse werden im Konsolenfenster angezeigt.

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

Siehe auch

Aufgaben

Gewusst wie: Verwenden des Assistenten für Entity Data Model (Entity Framework)

Konzepte

Übersicht über LINQ to Entities