다음을 통해 공유


마이그레이션 고려 사항(Entity Framework)

ADO.NET Entity Framework를 사용하면 기존 응용 프로그램보다 몇 가지 이점이 있습니다. 가장 중요한 이점 중 하나는 EDM(엔터티 데이터 모델)을 사용하여 응용 프로그램에서 사용되는 데이터 구조를 데이터 소스의 스키마와 구분할 수 있다는 것입니다. 이렇게 하면 응용 프로그램을 적절하게 변경하지 않아도 나중에 저장소 모델이나 데이터 소스 자체를 쉽게 변경할 수 있습니다. 엔터티 프레임워크의 사용 이점에 대한 자세한 내용은 Entity Framework 소개를 참조하십시오.

엔터티 프레임워크의 이점을 최대한 활용하기 위해 기존 응용 프로그램을 엔터티 프레임워크로 마이그레이션할 수 있습니다. 일부 작업은 마이그레이션되는 모든 응용 프로그램에 공통됩니다. 이러한 공통 작업에는 .NET Framework 버전 3.5 SP1(서비스 팩 1)을 사용하도록 응용 프로그램 업그레이드, EDM 정의, Entity Framework 구성 등이 포함됩니다. 응용 프로그램을 엔터티 프레임워크로 마이그레이션하는 경우 추가로 고려할 사항이 있습니다. 이러한 고려 사항은 마이그레이션되는 응용 프로그램의 종류와 응용 프로그램의 특정 기능에 따라 달라집니다. 이 항목에서는 기존 응용 프로그램을 업그레이드할 때 사용할 최상의 방법을 선택하는 데 유용한 정보를 제공합니다.

일반적인 마이그레이션 고려 사항

모든 응용 프로그램을 엔터티 프레임워크로 마이그레이션할 때는 다음 사항을 고려해야 합니다.

  • .NET Framework 3.5를 사용하는 모든 응용 프로그램은 해당 응용 프로그램에 사용되는 데이터 소스의 데이터 공급자가 Entity Framework를 지원하기만 하면 Entity Framework로 마이그레이션할 수 있습니다.

  • 공급자가 Entity Framework를 지원하지만 Entity Framework에서 데이터 소스 공급자의 모든 기능을 지원하지 않을 수도 있습니다.

  • 크거나 복잡한 응용 프로그램의 경우 한 번에 전체 응용 프로그램을 Entity Framework로 마이그레이션할 필요는 없습니다. 그러나 데이터 소스가 변경될 경우 Entity Framework를 사용하지 않는 응용 프로그램의 모든 부분을 변경해야 합니다.

  • 엔터티 프레임워크는 ADO.NET 데이터 공급자를 사용하여 데이터 소스에 액세스하므로 Entity Framework에 사용되는 데이터 공급자 연결을 응용 프로그램의 다른 부분과 공유할 수 있습니다. 예를 들어 Entity Framework는 SqlClient 공급자를 사용하여 SQL Server 데이터베이스에 액세스합니다. 자세한 내용은 Entity Framework용 EntityClient 공급자를 참조하십시오.

일반적인 마이그레이션 작업

기존 응용 프로그램을 엔터티 프레임워크로 마이그레이션하는 경로는 응용 프로그램 종류와 기존 데이터 액세스 전략에 따라 달라집니다. 그러나 기존 응용 프로그램을 엔터티 프레임워크로 마이그레이션하는 경우 항상 다음 작업을 수행해야 합니다.

Note참고

Visual Studio 2008과 함께 엔터티 데이터 모델 도구를 사용하면 이러한 모든 작업이 자동으로 수행됩니다. 자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오.

  1. 응용 프로그램을 업그레이드합니다.

    Visual Studio 및 .NET Framework의 이전 버전을 사용하여 만든 프로젝트는 Visual Studio 2008 SP1 및 .NET Framework 3.5 SP1을 사용하도록 업그레이드해야 합니다. 자세한 내용은 Visual Studio 변환 마법사를 참조하십시오.

  2. EDM(엔터티 데이터 모델)을 정의합니다.

    EDM은 개념적 모델의 엔터티, 데이터 소스의 구조(예: 테이블, 저장 프로시저 및 뷰), 엔터티와 데이터 소스 구조 간의 매핑을 정의합니다. 자세한 내용은 방법: 엔터티 데이터 모델 수동 정의(Entity Framework)를 참조하십시오.

    저장소 모델에 정의된 형식은 데이터 소스의 개체 이름과 일치해야 합니다. 기존 응용 프로그램에서 데이터를 개체로 노출하는 경우 개념적 모델에 정의된 엔터티 및 속성이 이러한 기존 데이터 클래스 및 속성의 이름과 일치하는지 확인해야 합니다. 자세한 내용은 방법: 사용자 지정 개체를 사용할 수 있도록 엔터티 데이터 모델 사용자 지정(Entity Framework)을 참조하십시오.

    Note참고

    엔터티 데이터 모델 디자이너를 사용하여 개념적 모델의 엔터티 이름을 기존 개체와 일치하도록 바꿀 수 있습니다. 자세한 내용은 ADO.NET 엔터티 데이터 모델 디자이너 개요를 참조하십시오.

  3. 연결 문자열을 정의합니다.

    엔터티 프레임워크는 EDM에 대해 쿼리를 실행할 때 특별한 형식의 연결 문자열을 사용합니다. 이 연결 문자열은 EDM 매핑 파일 및 데이터 소스에 대한 연결 정보를 캡슐화합니다. 자세한 내용은 방법: 연결 문자열 정의(Entity Framework)를 참조하십시오.

  4. Visual Studio 프로젝트를 구성합니다.

    엔터티 프레임워크 어셈블리 및 EDM에 대한 참조를 Visual Studio 프로젝트에 추가해야 합니다. 이러한 매핑 파일을 프로젝트에 추가하여 연결 문자열에 표시된 위치에 응용 프로그램과 함께 배포되도록 할 수 있습니다. 자세한 내용은 방법: Entity Framework 프로젝트 수동 구성을 참조하십시오.

기존 개체가 있는 응용 프로그램에 대한 고려 사항

응용 프로그램을 엔터티 프레임워크로 마이그레이션할 때 기존 데이터 클래스를 마이그레이션하는 방법은 이러한 클래스에 구현된 비즈니스 논리, 사용자 지정 메서드 및 속성 유효성 검사에 따라 달라집니다. 기존 데이터 클래스를 사용하려면 다음 방법 중 하나를 선택해야 합니다.

  • 데이터 클래스에서 개체 속성을 가져오고 설정만 하는 경우 기존 데이터 클래스를 엔터티 데이터 모델 도구에서 생성된 엔터티 형식으로 바꿉니다. 자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오.

  • 데이터 클래스에서 사용자 지정 유효성 검사 코드나 다른 비즈니스 논리를 구현하는 경우 이 논리를 엔터티 데이터 모델 도구에서 생성된 부분 클래스로 마이그레이션합니다. 엔터티 데이터 모델 도구는 엔터티 형식을 부분 클래스로 생성합니다. 이렇게 하면 기존 클래스를 부분 클래스로 변환하여 메서드와 속성을 다시 사용할 수 있습니다. 이때 생성된 클래스에서 중복되는 모든 속성을 기존 응용 프로그램에서 제거해야 합니다. 부분 클래스를 만드는 방법에 대한 자세한 내용은 개체 사용자 지정(Entity Framework)을 참조하십시오.

    데이터 클래스의 각 속성에 대해 엔터티 프레임워크 도구는 OnPropertyNameChangingOnPropertyNameChanged이라는 부분 메서드를 생성합니다. 기존 속성 유효성 검사 코드를 이러한 부분 메서드로 이동할 수 있습니다. 자세한 내용은 방법: 속성 변경 중 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

  • 기존 데이터 클래스에 많은 양의 사용자 지정 코드가 있거나 다른 이유로 기존 데이터 클래스를 유지하려는 경우 다음 중 하나를 수행해야 합니다.

    • EntityObject 또는 ComplexObject 클래스에서 상속하도록 데이터 클래스를 수정합니다. 생성되는 모든 EDM 형식이 EntityObject 또는 ComplexObject에서 상속되며, 엔터티 프레임워크를 통해 이러한 기본 클래스에서 상속하여 사용자 지정 데이터 클래스를 사용할 수 있습니다. EDM에서 사용자 지정 데이터 클래스를 사용할 때는 이 방법을 사용하는 것이 좋습니다. 자세한 내용은 개체 사용자 지정(Entity Framework)을 참조하십시오.

    • 인터페이스 집합을 구현하도록 데이터 클래스를 수정합니다. 데이터 클래스가 EntityObject 또는 ComplexObject에서 상속할 수 없는 경우 이 작업을 수행합니다. 이러한 인터페이스를 구현하는 방법에 대한 자세한 내용은 개체 사용자 지정(Entity Framework)을 참조하십시오.

Note참고

EDM에서 기존 데이터 클래스 또는 부분 클래스를 사용하는 경우 클래스 이름이 개념적 모델에 정의된 엔터티 이름과 일치해야 합니다. Entity Designer를 사용하여 엔터티 이름을 바꿉니다. 자세한 내용은 방법: 엔터티 형식 만들기 및 수정을 참조하십시오.

ADO.NET 공급자를 사용하는 응용 프로그램에 대한 고려 사항

SqlClient와 같은 ADO.NET 공급자를 통해 데이터 소스를 쿼리하여 표 형식 데이터를 반환할 수 있습니다. 데이터를 ADO.NET DataSet으로 로드할 수도 있습니다. 다음 목록에서는 기존 ADO.NET 공급자를 사용하는 응용 프로그램을 업그레이드할 때 고려할 사항에 대해 설명합니다.

  • 데이터 판독기를 사용하여 표 형식 데이터 표시
    EntityClient 공급자를 사용하고 반환되는 EntityDataReader 개체를 열거하여 Entity SQL 쿼리를 실행할 수 있습니다. 응용 프로그램이 데이터 판독기를 사용하여 표 형식 데이터를 표시하며 데이터를 개체로 구체화, 변경 내용 추적 및 업데이트를 위해 개체 서비스에서 제공하는 기능이 필요하지 않은 경우에만 이 작업을 수행합니다. 데이터 소스를 업데이트하는 기존 데이터 액세스 코드를 계속 사용할 수 있지만 EntityConnectionStoreConnection 속성에서 액세스된 기존 연결을 사용할 수도 있습니다. 자세한 내용은 Entity Framework용 EntityClient 공급자를 참조하십시오.
  • DataSets 사용
    엔터티 프레임워크에서 개체 서비스는 메모리 내 저장, 변경 내용 추적, 데이터 바인딩 및 XML 데이터로 개체 serialize를 비롯하여 DataSet에 의해 제공되는 것과 동일한 기능을 대부분 제공합니다. 자세한 내용은 개체 서비스 개요(Entity Framework)를 참조하십시오.

    개체 서비스에서 응용 프로그램에 필요한 DataSet의 기능을 제공하지 않아도 LINQ to DataSet을 사용하여 LINQ 쿼리의 이점을 활용할 수 있습니다. 자세한 내용은 LINQ to DataSet을 참조하십시오.

데이터를 컨트롤에 바인딩하는 응용 프로그램에 대한 고려 사항

.NET Framework를 사용하여 DataSet 또는 ASP.NET 데이터 소스 컨트롤과 같은 데이터 소스에 데이터를 캡슐화한 다음 사용자 인터페이스 요소를 이러한 데이터 컨트롤에 바인딩할 수 있습니다. 다음 목록에서는 컨트롤을 Entity Framework 데이터에 바인딩할 때 고려할 사항에 대해 설명합니다.

  • 컨트롤에 데이터 바인딩
    EDM을 쿼리하면 개체 서비스에서 데이터를 엔터티 형식의 인스턴스인 개체로 반환합니다. 이러한 개체를 직접 컨트롤에 바인딩할 수 있으며, 이 바인딩은 업데이트를 지원합니다. 즉, DataGridView의 행과 같은 컨트롤의 데이터를 변경하면 SaveChanges 메서드를 호출할 때 변경 내용이 자동으로 데이터베이스에 저장됩니다.

    응용 프로그램에서 쿼리 결과를 열거하여 DataGridView 또는 데이터 바인딩을 지원하는 다른 형식의 컨트롤에 데이터를 표시하는 경우 응용 프로그램을 수정하여 컨트롤을 ObjectQuery의 결과에 바인딩할 수 있습니다.

    자세한 내용은 컨트롤에 개체 바인딩(Entity Framework)을 참조하십시오.

  • ASP.NET 데이터 소스 컨트롤
    엔터티 프레임워크에는 ASP.NET 웹 응용 프로그램의 데이터 바인딩을 단순화하기 위한 데이터 소스 컨트롤이 포함되어 있습니다. 자세한 내용은 Entity Framework 데이터 소스 컨트롤을 참조하십시오.

기타 고려 사항

특정 종류의 응용 프로그램을 Entity Framework로 마이그레이션할 때 다음 사항을 고려해야 할 수도 있습니다.

  • 데이터 서비스를 노출하는 응용 프로그램
    WCF(Windows Communication Foundation)를 기반으로 하는 웹 서비스와 응용 프로그램은 XML 요청/응답 메시징 형식을 사용하여 기본 데이터 소스의 데이터를 노출합니다. 엔터티 프레임워크에서는 이진, XML 또는 WCF 데이터 계약 serialization을 사용하여 엔터티 개체의 serialization을 지원합니다. 이진 및 WCF serialization은 모두 개체 그래프의 전체 serialization을 지원합니다. 자세한 내용은 웹 서비스 및 엔터티 데이터 모델(응용 프로그램 시나리오)을 참조하십시오.
  • XML 데이터를 사용하는 응용 프로그램
    개체 serialization을 사용하여 엔터티 프레임워크 데이터 서비스를 만들 수 있습니다. 이러한 서비스는 AJAX 기반 인터넷 응용 프로그램과 같이 XML 데이터를 사용하는 응용 프로그램에 데이터를 제공합니다. 이런 경우 ADO.NET 데이터 서비스를 사용합니다. 이러한 데이터 서비스는 EDM을 기반으로 하며 GET, PUT, POST와 같은 표준 REST(Representational State Transfer) HTTP 동작을 사용하여 엔터티 데이터에 대한 동적 액세스를 제공합니다. 자세한 내용은 ADO.NET 데이터 서비스 프레임워크를 참조하십시오.

    엔터티 프레임워크에서는 기본 XML 데이터 형식을 지원하지 않습니다. 즉, XML 열이 있는 테이블에 엔터티를 매핑할 때 XML 열에 해당하는 엔터티 속성은 문자열입니다. 개체의 연결을 끊고 XML로 serialize할 수 있습니다. 자세한 내용은 개체 Serialize(Entity Framework)를 참조하십시오.

    응용 프로그램에 XML 데이터 쿼리 기능이 필요한 경우에도 LINQ to XML을 사용하여 LINQ 쿼리의 이점을 활용할 수 있습니다. 자세한 내용은 LINQ to XML을 참조하십시오.

  • 상태를 유지하는 응용 프로그램
    ASP.NET 웹 응용 프로그램은 흔히 웹 페이지 또는 사용자 세션의 상태를 유지해야 합니다. ObjectContext 인스턴스의 개체를 클라이언트 보기 상태나 세션 상태로 서버에 저장한 다음, 나중에 검색하여 새 개체 컨텍스트에 다시 연결할 수 있습니다. 자세한 내용은 개체 연결(Entity Framework)을 참조하십시오.

참고 항목

개념

배포 고려 사항(Entity Framework)
Entity Framework 용어

기타 리소스

Entity Framework 작업