Procédure : retourner un objet spécifique à l'aide de sa clé (Entity Framework)

Cette rubrique montre comment récupérer une entité au moyen de ses valeurs de clé plutôt que via la création et l'exécution explicites d'une requête d'objet. Les exemples de cette rubrique sont basés sur le modèle de vente Modèle de vente AdventureWorks Sales Model (EDM). Pour exécuter le code de ces exemples, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour cela, exécutez les procédures décrites dans Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework). Vous pouvez également définir le modèle de vente AdventureWorks Sales Model à l'aide de l'Assistant EDM. Pour plus d'informations, voir Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

Exemple

Cet exemple utilise la méthode GetObjectByKey sur ObjectContext pour retourner un objet EntityKey spécifié dans le contexte de l'objet. Cet exemple gère l'exception ObjectNotFoundException qui est levée lorsque l'objet EntityKey fourni ne correspond à aucune entité existante. Pour éviter l'exception ObjectNotFoundException, appelez TryGetObjectByKey, qui retourne false au lieu de lever une exception.

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

Voir aussi

Tâches

Procédure : exécuter une requête qui retourne un type d'entité (Entity Framework)
Procédure : utiliser des chemins d'accès de requête pour personnaliser des résultats (Entity Framework)

Concepts

Interrogation des données sous forme d'objets (Entity Framework)

Autres ressources

Interrogation d'un modèle EDM (Tâches Entity Framework)