방법: 프로젝트 데이터 소스로 개체 추가(Entity Framework)

Visual Studio 응용 프로그램에서 개체를 기반으로 하는 데이터 소스를 만들 수 있습니다. 엔터티 형식을 프로젝트의 데이터 소스로 정의한 후 데이터 소스 창의 항목을 폼으로 끌어 엔터티 데이터를 표시하는 폼을 만들 수 있습니다. 이러한 항목은 데이터 소스에 바인딩된 폼의 컨트롤이 됩니다. 자세한 내용은 컨트롤에 개체 바인딩(Entity Framework)을 참조하십시오.

이 항목에서는 Adventure Works Sales 모델SalesOrderHeader 형식에 대한 데이터 소스를 만듭니다. 그런 다음 이 데이터 소스를 사용하여 엔터티 데이터에 바인딩된 컨트롤이 포함된 Windows Form을 만듭니다. 이러한 절차를 완료하려면 프로젝트에 AdventureWorks Sales 모델을 추가하고 프로젝트에서 Entity Framework 를 사용하도록 구성해야 합니다. 이렇게 하려면 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)의 절차를 완료합니다.

SalesOrderHeader 형식을 기반으로 데이터 소스를 만들려면

  1. 최근에 엔터티 데이터 모델 항목을 추가한 경우 프로젝트를 빌드합니다.

  2. 데이터 메뉴에서 새 데이터 소스 추가를 클릭합니다.

  3. 데이터 소스 형식 선택 페이지에서 개체를 선택합니다.

  4. 바인딩할 개체 선택 페이지의 트리 뷰에서 프로젝트 노드와 프로젝트의 네임스페이스 노드를 차례로 확장하고 SalesOrderHeader 형식을 선택합니다.

  5. 마침을 클릭합니다.

    SalesOrderHeader 데이터 소스가 데이터 소스 창에 추가됩니다.

데이터 소스가 바인딩된 컨트롤을 Windows Form에 추가하려면

  1. 데이터 소스 창에서 SalesOrderHeader 노드를 확장합니다.

  2. SalesOrderHeader 노드에서 하나 이상의 속성을 폼으로 끌어다 놓습니다.

    salesOrderHeaderBindingSourcesalesOrderHeaderBindingNavigator 컨트롤이 폼에 만들어집니다. 각 속성에 대한 데이터 바인딩된 컨트롤도 폼에 만들어지며, 적절한 제목의 레이블 컨트롤이 함께 표시됩니다.

  3. SalesOrderDetail 탐색 속성을 폼으로 끌어다 놓습니다.

  4. 컨트롤의 DataSource 속성이 salesOrderHeaderBindingSource로 설정되고 DataMember 속성이 SalesOrderDetail로 설정된 salesOrderDetailBindingSource 컨트롤이 만들어집니다. 데이터 바인딩된 salesOrderDetailDataGridView 컨트롤도 폼에 만들어지며, 적절한 제목의 레이블 컨트롤이 함께 표시됩니다.

데이터 소스를 개체 쿼리의 결과에 바인딩하려면

  1. 폼의 코드 페이지를 열고 다음 using 문(Visual Basic의 경우 Imports)을 추가합니다.

    using System.Data.Objects;
    
  2. 폼을 정의하는 partial 클래스에서 ObjectContext 인스턴스를 만들고 customerID 상수를 정의하는 다음 코드를 추가합니다.

    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. 폼 디자이너에서 폼을 두 번 클릭합니다.

    폼에 대한 코드 페이지가 열리고 폼의 Load 이벤트를 처리하는 메서드가 만들어집니다.

  4. Load 이벤트 처리기에서 다음 코드를 복사하여 붙여 넣습니다.

    // Initialize the object context.
    context = new AdventureWorksEntities();
    
    try
    {
        // Create a query for orders and related items.
        var orderQuery = context.SalesOrderHeaders
            .Where("it.CustomerID = @customerId",
            new ObjectParameter("customerId", customerId))
            .Include("SalesOrderDetails");
    
        // Set the data source of the binding source to the ObjectResult 
        // returned when the query is executed.
        salesOrderHeaderBindingSource.DataSource = 
            orderQuery.Execute(MergeOption.AppendOnly);
    }
    catch (EntitySqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
    

    이 코드는 특정 고객에 대한 SalesOrderHeader 및 관련된 SalesOrderDetail 개체 컬렉션을 반환하는 쿼리를 실행하고 SalesOrderHeader 개체 컬렉션을 salesOrderHeaderBindingSource에 바인딩합니다.

참고 항목

작업

방법: Windows Presentation Foundation 컨트롤에 개체 바인딩(Entity Framework)
방법: Windows Form 컨트롤에 개체 바인딩(Entity Framework)

개념

컨트롤에 개체 바인딩(Entity Framework)