방법: 개체 키를 사용하여 특정 개체 반환(Entity Framework)
이 항목에서는 개체 쿼리를 명시적으로 만들어 실행하는 대신 엔터티의 키 값을 사용하여 엔터티를 검색하는 방법을 보여 줍니다. 이 항목의 예제는 AdventureWorks Sales 모델을 기반으로 합니다. 이 예제의 코드를 실행하려면 프로젝트에 AdventureWorks Sales 모델을 추가하고 Entity Framework 를 사용하도록 프로젝트를 구성해야 합니다. 이렇게 하려면 방법: Entity Framework 프로젝트 수동 구성 및 방법: 수동으로 모델 및 매핑 파일 정의(Entity Framework)의 절차를 수행합니다. 엔터티 데이터 모델 마법사를 사용하여 AdventureWorks Sales 모델을 정의할 수도 있습니다. 자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오.
예제
이 예제에서는 ObjectContext의 GetObjectByKey 메서드를 사용하여 지정된 EntityKey를 가지는 개체를 개체 컨텍스트에 반환합니다. 이 예제에서는 제공된 EntityKey가 기존 엔터티에 해당하지 않을 때 발생하는 ObjectNotFoundException을 처리합니다. ObjectNotFoundException을 방지하기 위해 예외를 발생시키지 않고 false를 반환하는 TryGetObjectByKey를 호출합니다.
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)