Cómo: Devolver un objeto concreto usando su clave (Entity Framework)

En este tema se demuestra cómo recuperar una entidad por los valores de sus claves en lugar de creando y ejecutando explícitamente una consulta de objeto. Los ejemplos de este tema se basan en el Modelo AdventureWorks Sales. Para ejecutar el código de estos ejemplos, debe haber agregado ya el modelo AdventureWorks Sales al proyecto y haber configurado el proyecto para usar Entity Framework . Para ello, complete los procedimientos de Cómo configurar manualmente un proyecto de Entity Framework y Cómo: Definir manualmente los archivos de asignación y modelo (Entity Framework). También puede utilizar el Asistente para Entity Data Model con el fin de definir el modelo AdventureWorks Sales. Para obtener más información, vea Cómo usar el Asistente para Entity Data Model (Entity Framework).

Ejemplo

En este ejemplo se utiliza el método GetObjectByKey en ObjectContext para devolver un objeto con la EntityKey especificada en el contexto del objeto. En este ejemplo se atiende la ObjectNotFoundException que se produce cuando la EntityKey suministrada no se corresponde con una entidad existente. Para evitar la ObjectNotFoundException, llame a TryGetObjectByKey, que devuelve false en lugar de iniciar una excepción.

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

Vea también

Tareas

Cómo: Ejecutar una consulta que devuelva objetos de tipo de entidad (Entity Framework)
Cómo: Usar rutas de la consulta para dar forma a los resultados (Entity Framework)

Conceptos

Consultar un modelo conceptual (Entity Framework)