Как вернуть конкретный объект с помощью его ключа (платформа Entity Framework)

В этом разделе приведено описание того, как получить сущность по значениям ее ключей вместо явного создания и выполнения запроса объектов. Примеры в этом разделе основаны на модели Модель AdventureWorks Sales. Чтобы запустить код в этом примере, необходимо добавить в проект модель AdventureWorks Sales и настроить проект для использования платформы Entity Framework . Для этого выполните инструкции из разделов Как вручную настроить проект Entity Framework и Как определить модель и файлы сопоставления вручную (платформа Entity Framework). Для определения модели AdventureWorks Sales можно также использовать мастер моделей EDM. Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

Пример

В данном примере используется метод GetObjectByKey применительно к ObjectContext для возврата объекта с указанным значением EntityKey в контекст объекта. В этом примере осуществляется обработка исключения ObjectNotFoundException, которое возникает, если предоставленное значение EntityKey не соответствует ни одной существующей сущности. Для предотвращения возникновения исключений ObjectNotFoundException следует вызывать функцию TryGetObjectByKey, которая возвращает значение false вместо активизации исключения.

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

См. также

Задачи

Как выполнить запрос, возвращающий объекты типа сущностей (платформа Entity Framework)
Как использовать пути запросов для формирования результатов (платформа Entity Framework)

Основные понятия

Выполнение запроса к концептуальной модели (платформа Entity Framework)