Verwenden des Northwind-Objektmodells (EDM)

Um das in den verwandten Themen in Anwendungscode entworfene und erstellte Objektmodell Northwind zu verwenden, fügen einen Verweis auf die DLL sowie eine using-Direktive hinzu, die den Namespace NorthwindLib angibt. Die Typen des Namespace können im Anwendungscode ohne SQL-Syntax verwendet werden.

Konfigurationsdatei und Verbindungszeichenfolge

Die Verwendung des Objektmodells erfordert eine Verbindung zur Datenbank, in der die Anwendungsdaten gespeichert werden. Zudem ist eine Entitätsverbindung zu den Laufzeitobjekten erforderlich, die von der mit den Schemas erstellten DLL bereitgestellt wird.

Die Datei exe.config enthält eine Verbindungszeichenfolge zur Herstellung einer Verbindung zu einer SQL Server-Datenbank und einer Entitätsverbindung. Mithilfe einer Entitätsverbindung kann auf die Entitäten und Zuordnungen im Objektmodell über den Code zugegriffen werden.

Der Entwickler muss der Datei exe.config den Verbindungszeichenfolgentext hinzufügen. Diese Anwendung gibt die Klasse "Northwind" an. Die Zuweisung providerName="System.Data.EntityClient" bestimmt eine Entitätsverbindung, die das in der Northwind-Mappingspezifikation definierte Mappingschema verwendet.

Die Verbindungszeichenfolge identifiziert auch den Server, der von der SQL-Verbindung verwendet wird: provider connection string="server=servername".

Im folgenden Beispiel finden Sie den Inhalt der Datei exe.config.

?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Northwind" 
                 connectionString='Metadata=.;
                 Provider=System.Data.SqlClient;
                 Provider Connection String="server=servername;
                 database=Northwind;Integrated Security=true;
                 Connection Timeout=5;multipleactiveresultsets=true"'
                 providerName="System.Data.EntityClient"/>
    </connectionStrings>
</configuration>

Die Zuweisung Metadata=. gibt den Pfad zu den Metadaten einschließlich des konzeptionellen Schemas, der Speichermetadaten und der Mappingspezifikation an. In diesem Beispiel befinden sich die Daten im selben Ordner wie die ausführbare Datei. Daher wird der Pfad durch den Punkt (.) angegeben wie in der Syntax Metadata=.. Wenn sich die Schema- und Mappingdateien nicht im selben Ordner befinden, muss der vollständige Pfad angegeben werden.

NoteHinweis

Diese Verbindungszeichenfolge setzt "Multiple Active Result Sets" auf "True". Dies ist erforderlich, um die Load-Methode für Zuordnungen aufzurufen, wenn für dieselbe Verbindung bereits ein anderer Datenleser geöffnet wurde.

Anwendungscode

Der folgende Code verwendet die Entitäten und Zuordnungen, die im konzeptionellen Schema definiert und in der Mappingspezifikation den Speichermetadaten zugeordnet wurden. Ausführliche Informationen über dieses Datenmodell finden Sie unter Northwind-Modell (EDM). Eine EntityConnection für den ObjectContext, der aus dem im Thema Konzeptionelles Schema für Northwind (EDM) definierten konzeptionellen Schema erstellt wurde, wird geöffnet. Die Entitäten und die Zuordnung im Namespace NorthwindLib werden verwendet, um Entitätseigenschaften (z. B. Auftrags-IDs) anzuzeigen, Kunden über Zuordnungen zwischen Entitäten zu suchen, Produkte anzuzeigen sowie Produktkategorien zu finden und anzuzeigen, die über Zuordnungen mit Produkten verbunden sind.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NorthwindLib;

namespace NorthwindClient
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (NorthwindLib.Northwind DB = new Northwind())
                {
                    foreach (SalesOrder salesOrder in DB.SalesOrders)
                    {
                        salesOrder.CustomerReference.Load();
                        Console.WriteLine(
                            "Customer Contact: {0} ** OrderID: {1}",
                            salesOrder.Customer.ContactName,
                            salesOrder.OrderID.ToString());
                    }

                    foreach (Product product in DB.Products)
                    {
                        product.CategoryReference.Load();
                        Console.WriteLine(" Product: " +
                            product.ProductName +
                            " ** Category: " + 
                            product.CategoryReference.Value.CategoryName);
                    }

                    DB.Connection.Close();
                }
            }

            catch (System.Data.MappingException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch (System.Data.CommandExecutionException e)
            {
                Console.WriteLine(e.ToString());
            }

        }
    }
}

Siehe auch

Weitere Ressourcen

Schemas und Mappingspezifikation (Entity Framework)
EDM-Spezifikationen