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. 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 les fichiers du modèle et les fichiers de mappage (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 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());
    }
}

Voir aussi

Tâches

Procédure : exécuter une requête qui retourne des objets de 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 d'un modèle conceptuel (Entity Framework)