Gewusst wie: Zurückgeben eines bestimmten Objekts mithilfe seines Schlüssels (Entity Framework)

In diesem Thema wird gezeigt, wie eine Entität mithilfe ihrer Schlüsselwerte und nicht durch Erstellen und Ausführen einer Objektabfrage abgerufen werden kann. Die Beispiele in diesem Thema beruhen auf dem AdventureWorks Sales-Modell (EDM). Um den Code in diesen Beispielen auszuführen, müssen Sie dem Projekt bereits das "AdventureWorks Sales"-Modell hinzugefügt und das Projekt für die Verwendung von Entity Framework konfiguriert haben. Führen Sie dazu die Verfahren unter Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren eines Entity Data Model (Entity Framework) durch. Sie können auch den Assistenten für Entity Data Model zum Definieren des "AdventureWorks Sales"-Modells verwenden. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Assistenten für Entity Data Model (Entity Framework).

Beispiel

Dieses Beispiel verwendet die GetObjectByKey-Methode für den ObjectContext, um ein Objekt mit dem angegebenen EntityKey in den Objektkontext zurückzugeben. Dieses Beispiel behandelt die ObjectNotFoundException, die auftritt, wenn der übergebene EntityKey nicht zu einer bestehenden Entität gehört. Um die ObjectNotFoundException zu vermeiden, rufen Sie TryGetObjectByKey auf. Diese Methode gibt false zurück, statt eine Ausnahme auszulösen.

Using advWorksContext As New AdventureWorksEntities
    Try
        ' Define the entity key values.
        Dim entityKeyValues As IEnumerable(Of KeyValuePair(Of String, Object)) = _
                New KeyValuePair(Of String, Object)() { _
                    New KeyValuePair(Of String, Object)("SalesOrderID", 43680)}

        ' Create the  key for a specific SalesOrderHeader object. 
        Dim key As New EntityKey("AdventureWorksEntities.SalesOrderHeader", entityKeyValues)

        Dim order As SalesOrderHeader = _
            CType(advWorksContext.GetObjectByKey(key), SalesOrderHeader)

        Console.WriteLine("SalesOrderID:{0}Order Number: {1}", _
            order.SalesOrderID, order.SalesOrderNumber)

    Catch ex As ObjectNotFoundException
        Console.WriteLine(ex.ToString)
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        // Define the entity key values.
        IEnumerable<KeyValuePair<string, object>> entityKeyValues =
            new KeyValuePair<string, object>[] { 
                new KeyValuePair<string, object>("SalesOrderID", 43680) };

        // Create the  key for a specific SalesOrderHeader object. 
        EntityKey key = new EntityKey("AdventureWorksEntities.SalesOrderHeader", entityKeyValues);

        // Get the object from the context or the persisted store by its key.
        SalesOrderHeader order =
            (SalesOrderHeader)advWorksContext.GetObjectByKey(key);

        Console.WriteLine("SalesOrderID: {0} Order Number: {1}",
            order.SalesOrderID, order.SalesOrderNumber);
    }
    catch (ObjectNotFoundException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Siehe auch

Aufgaben

Gewusst wie: Ausführen einer Abfrage, die einen Entitätstyp zurückgibt (Entity Framework)
Gewusst wie: Bestimmen von Ergebnissen mit Abfragepfaden (Entity Framework)

Konzepte

Abfragen von Daten als Objekte (Entity Framework)

Weitere Ressourcen

Abfragen eines Entity Data Model (Entity Framework-Aufgaben)