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

In diesem Thema wird gezeigt, wie eine Entität anhand 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. Zum Ausführen des Codes in diesen Beispielen müssen Sie Ihrem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt für die Verwendung von Entity Framework konfiguriert haben. Verwenden Sie dazu das Verfahren aus Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren der Modell- und Zuordnungsdateien (Entity Framework). 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 Entity Data Model-Assistenten (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 context 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.SalesOrderHeaders", entityKeyValues)

        ' Get the object from the context or the persisted store by its key. 
        Dim order As SalesOrderHeader = DirectCast(context.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 context =
    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.SalesOrderHeaders", entityKeyValues);

        // Get the object from the context or the persisted store by its key.
        SalesOrderHeader order =
            (SalesOrderHeader)context.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 Entitätstypobjekte zurückgibt (Entity Framework)
Gewusst wie: Bestimmen von Ergebnissen mit Abfragepfaden (Entity Framework)

Konzepte

Abfragen eines konzeptionellen Modells (Entity Framework)