탐색 속성

Entity Framework 의 탐색 속성을 사용하면 두 엔터티 형식 간의 연결을 탐색할 수 있습니다. 탐색 속성은 개념적 모델에서 NavigationProperty 요소(CSDL)로 정의됩니다. 모든 개체에는 해당 개체가 참여하는 모든 관계에 대한 탐색 속성이 있습니다. 탐색 속성을 사용하면 양방향에서 관계를 탐색 및 관리하고, EntityReference(복합성이 1인 경우 또는 0이나 1인 경우)나 EntityCollection(복합성이 다수인 경우)을 반환할 수 있습니다. 단방향 탐색을 사용하도록 선택할 수도 있으며, 이 경우 탐색 속성을 삭제할 수 있습니다. 자세한 내용은 How to: Edit and Delete Navigation Properties를 참조하십시오.

Entity Framework 에서 생성된 클래스를 사용할 경우, 관계에 참여하는 개체에 대해 탐색 속성이 만들어집니다. POCO 엔터티에서 탐색 속성을 사용하는 방법은 POCO 프록시를 만들기 위한 요구 사항(Entity Framework)을 참조하십시오.

관계 수정

탐색 속성을 사용하여 관계를 변경할 수 있습니다. 다음 예제에서는 Order 개체에서 Customer 탐색 속성을 사용하여 해당 주문과 연결된 고객 참조에 액세스하는 방법으로 주문에 다른 고객을 할당합니다. order.Customer = customer

다음 예제에서는 Orders 탐색 속성을 사용하여 customer에 속하는 orders 컬렉션에 액세스하는 방법으로 기존 고객 주문에 주문을 추가합니다.

customer.Orders.Add(order).

외래 키 연결에서는 다음 예제와 같이 종속 개체의 외래 키 속성을 설정하여 관계를 구성하거나 변경할 수 있습니다.

order.CustomerID = CustomerID.

독립 연결 및 외래 키 연결에 대한 자세한 내용은 관계 정의 및 관리(Entity Framework)를 참조하십시오.

탐색 속성을 사용하여 정의된 연결에 의해 엔터티와 관련된 개체를 로드할 수 있습니다. 자세한 내용은 관련 개체 로드(Entity Framework)방법: 탐색 속성을 사용하여 관계 탐색(Entity Framework)을 참조하십시오.

관계 탐색

메서드 기반 쿼리 구문을 사용하는 다음 예제에서는 SelectMany 메서드를 사용하여 성이 "Zhou"인 연락처의 모든 주문을 가져옵니다. Contact.SalesOrderHeader 탐색 속성을 사용하여 각 연락처의 SalesOrderHeader 개체 컬렉션을 가져옵니다.

Dim lastName = "Zhou"
Using context As New AdventureWorksEntities
    Dim ordersQuery = context.Contacts _
    .Where(Function(c) c.LastName = lastName) _
    .SelectMany(Function(o) o.SalesOrderHeaders)

    For Each order In ordersQuery
        Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}", _
                order.SalesOrderID, order.OrderDate, order.TotalDue)
    Next
End Using
string lastName = "Zhou";
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<SalesOrderHeader> ordersQuery = context.Contacts
        .Where(c => c.LastName == lastName)
        .SelectMany(c => c.SalesOrderHeaders);

    foreach (var order in ordersQuery)
    {
        Console.WriteLine("Order ID: {0}, Order date: {1}, Total Due: {2}",
            order.SalesOrderID, order.OrderDate, order.TotalDue);
    }
}

참고 항목

개념

관계 정의 및 관리(Entity Framework)