다음을 통해 공유


방법: 개체 키를 사용하여 특정 개체 반환(Entity Framework)

이 항목에서는 개체 쿼리를 명시적으로 만들어 실행하는 대신 엔터티의 키 값을 사용하여 엔터티를 검색하는 방법을 보여 줍니다. 이 항목의 예제는 AdventureWorks Sales 모델(EDM)을 기반으로 합니다. 이 예제의 코드를 실행하려면 프로젝트에 AdventureWorks Sales 모델을 추가하고 엔터티 프레임워크를 사용하도록 프로젝트를 구성해야 합니다. 이렇게 하려면 방법: Entity Framework 프로젝트 수동 구성방법: 엔터티 데이터 모델 수동 정의(Entity Framework)의 절차를 수행합니다. 엔터티 데이터 모델 마법사를 사용하여 AdventureWorks Sales 모델을 정의할 수도 있습니다. 자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오.

예제

이 예제에서는 ObjectContextGetObjectByKey 메서드를 사용하여 지정된 EntityKey를 가지는 개체를 개체 컨텍스트에 반환합니다. 이 예제에서는 제공된 EntityKey가 기존 엔터티에 해당하지 않을 때 발생하는 ObjectNotFoundException을 처리합니다. ObjectNotFoundException을 방지하기 위해 예외를 발생시키지 않고 false를 반환하는 TryGetObjectByKey를 호출합니다.

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

참고 항목

작업

방법: 엔터티 형식을 반환하는 쿼리 실행(Entity Framework)
방법: 쿼리 경로를 사용하여 결과 모양 결정(Entity Framework)

개념

데이터를 개체로 쿼리(Entity Framework)

기타 리소스

엔터티 데이터 모델 쿼리(Entity Framework 작업)