Entity Framework-마이그레이션

Entity Framework 5 및 이전 버전의 Entity Framework에서는 코드가 .NET Framework의 일부로 제공되는 핵심 라이브러리 (주로 System.Data.Entity.dll)로 분할되었고 추가 라이브러리 (주로 EntityFramework.dll)가 배포되었습니다. 다음 다이어그램과 같이 NuGet을 사용하여 배송되었습니다.

Entity Framework 6에서는 이전에 .NET Framework의 일부였던 핵심 API도 NuGet 패키지의 일부로 제공되고 배포됩니다.

이것은 Entity Framework를 오픈 소스로 만드는 데 필요했습니다. 그러나 결과적으로 응용 프로그램을 이전 버전의 Entity Framework에서 EF 6으로 마이그레이션하거나 업그레이드해야 할 때마다 응용 프로그램을 다시 빌드해야합니다.

애플리케이션이 EF 4.1 이상에서 제공되는 DbContext를 사용하는 경우 마이그레이션 프로세스는 간단합니다. 그러나 응용 프로그램이 ObjectContext이면 약간의 작업이 필요합니다.

기존 애플리케이션을 EF6으로 업그레이드하기 위해 거쳐야하는 다음 단계를 살펴 보겠습니다.

Step 1 − 첫 번째 단계는 .NET Framework 4.5.2를 대상으로하고 나중에 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하는 것입니다.

Step 2 − 프로젝트를 다시 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리 ...를 선택합니다.

Step 3− 온라인 탭에서 EntityFramework를 선택하고 설치를 클릭합니다. System.Data.Entity.dll에 대한 어셈블리 참조가 제거되었는지 확인합니다.

EF6 NuGet 패키지를 설치하면 프로젝트에서 System.Data.Entity에 대한 모든 참조가 자동으로 제거됩니다.

Step 4 − EF 디자이너로 생성 된 모델이있는 경우 EF6 호환 코드를 생성하도록 코드 생성 템플릿도 업데이트해야합니다.

Step 5 − edmx 파일 아래의 솔루션 탐색기에서 일반적으로 이름이 <edmx_file_name> .tt 및 <edmx_file_name> .Context.tt 인 기존 코드 생성 템플릿을 삭제합니다.

Step 6 − EF 디자이너에서 모델을 열고 디자인 화면을 마우스 오른쪽 버튼으로 클릭 한 다음 코드 생성 항목 추가 ...를 선택합니다.

Step 7 − 적절한 EF 6.x 코드 생성 템플릿을 추가합니다.

또한 EF6 호환 코드를 자동으로 생성합니다.

애플리케이션에서 EF 4.1 이상을 사용하는 경우 DbContext 및 Code First 유형의 네임 스페이스가 변경되지 않았으므로 코드에서 아무것도 변경할 필요가 없습니다.

그러나 응용 프로그램이 이전 버전의 Entity Framework를 사용하는 경우 이전에 System.Data.Entity.dll에 있던 ObjectContext와 같은 유형이 새 네임 스페이스로 이동되었습니다.

Step 8 − EF6에 대해 빌드하려면 using 또는 Import 지시문을 업데이트해야합니다.

네임 스페이스 변경에 대한 일반적인 규칙은 System.Data. *의 모든 유형이 System.Data.Entity.Core. *로 이동하는 것입니다. 다음은 그들 중 일부입니다-

  • System.Data.EntityException ⇒ System.Data.Entity.Core.EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data.Entity.Core.Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core.Objects.DataClasses.RelationshipManager;

일부 유형은 대부분의 DbContext 기반 애플리케이션에 직접 사용되지 않기 때문에 Core 네임 스페이스에 있습니다.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

기존 Entity Framework 프로젝트는 큰 변경없이 Entity Framework 6.0에서 작동합니다.