Entity Framework의 이전 릴리스

Entity Framework의 첫 번째 버전은 2008년에 .NET Framework 3.5 SP1 및 Visual Studio 2008 SP1의 일부로 처음 릴리스되었습니다.

EF4.1 릴리스부터는 현재 NuGet.org에서 가장 인기 있는 패키지 중 하나인 EntityFramework NuGet 패키지가 제공되었습니다.

버전 4.1과 5.0 사이의 EntityFramework NuGet 패키지는 .NET Framework 일부로 제공된 EF 라이브러리를 확장했습니다.

버전 6부터 EF는 오픈 소스 프로젝트가 되었으며 .NET Framework 대역에서 완전히 벗어났습니다. 즉, EntityFramework 버전 6 NuGet 패키지를 애플리케이션에 추가할 때 .NET Framework의 일부로 제공되는 EF 비트에 의존하지 않는 EF 라이브러리의 전체 복사본을 가져옵니다. 이를 통해 새로운 기능의 개발 및 제공 속도를 다소 가속화할 수 있습니다.

2016년 6월에는 EF Core 1.0이 릴리스되었습니다. EF Core는 새 코드베이스를 기반으로 하며 보다 가볍고 확장 가능한 EF 버전으로 설계되었습니다. 현재 EF Core는 Microsoft의 Entity Framework 팀 개발의 주요 초점입니다. 즉, EF6에 대해 계획된 새로운 주요 기능은 없습니다. 그러나 EF6은 여전히 오픈 소스 프로젝트 및 지원되는 Microsoft 제품으로 유지 관리됩니다.

다음은 각 릴리스에 도입된 새로운 기능에 대한 정보와 함께 이전 릴리스의 목록이 역순으로 나열됩니다.

Visual Studio 2017 15.7의 EF 도구 업데이트

2018년 5월에 Visual Studio 2017 15.7의 일부로 업데이트된 버전의 EF 도구가 릴리스되었습니다. 공통적인 몇 가지 문제점이 이 버전에서 개선되었습니다.

  • 여러 사용자 인터페이스 접근성 버그 수정
  • 기존 데이터베이스에서 모델을 생성하는 경우 SQL Server 성능 회귀에 대한 해결 #4
  • SQL Server의 대규모 모델에 모델을 업데이트하는 지원 #185

또한 새 버전의 EF 도구는 새 프로젝트에서 모델을 만들 때 EF 6.2 런타임을 설치하도록 개선되었습니다. 이전 버전의 Visual Studio를 사용하는 경우 해당하는 NuGet 패키지 버전을 설치하여 EF 6.2 런타임(그리고 이전 버전의 EF)을 사용할 수 있습니다.

EF 6.2.0

EF 6.2 런타임은 2017년 10월에 NuGet에 출시되었습니다. 오픈 소스 기여자 커뮤니티의 적극적인 참여 덕분에 EF 6.2는 여러 버그 픽스향상된 제품 기능을 포함하고 있습니다.

다음은 EF 6.2 런타임에 영향을 주는 가장 중요한 변경 내용을 간략하게 정리한 목록입니다.

  • 영구 캐시에서 완료된 Code First 모델을 로드하여 시작 시간 단축 #275
  • 인덱스를 정의할 수 있는 흐름 API #274
  • SQL에서 LIKE로 해석되는 LINQ 쿼리를 쓸 수 있게 해주는 DbFunctions.Like() #241
  • 이제 Migrate.exe가 -script 옵션 지원 #240
  • 이제 EF6는 SQL Server에서 시퀀스를 통해 생성된 키 값 사용 가능 #165
  • SQL Azure 실행 전략에 대한 일시적인 오류 목록 업데이트 83
  • 버그: "SqlParameter가 이미 다른 SqlParameterCollection에 포함되어 있음" 메시지와 함께 쿼리 재시도 또는 SQL 명령이 실패 #81
  • 버그: 디버거에서 DbQuery.ToString() 평가가 자주 시간 초과 #73

EF 6.1.3

EF 6.1.3 런타임은 2015년 10월에 NuGet에 릴리스되었습니다. 이 릴리스에는 6.1.2 릴리스에서 보고된 우선 순위가 높은 결함 및 회귀에 대한 수정 사항만 포함되어 있습니다. 수정 사항은 다음과 같습니다.

  • 쿼리: EF 6.1.2의 회귀: OUTER APPLY 도입 및 1:1 관계와 "let" 절에 대한 보다 복잡한 쿼리
  • 상속된 클래스에서 기본 클래스 속성을 숨기는 TPT 문제
  • 텍스트에 'go'라는 단어가 포함되어 있는 경우 DbMigration.Sql의 실패
  • UnionAll 및 교차 평면화 지원에 대한 호환성 플래그 만들기
  • 여러 포함 쿼리가 6.1.2에서 작동하지 않음(6.1.1에서는 작동)
  • EF 6.1.1에서 6.1.2로 업그레이드한 후 "SQL 구문에 오류가 있음" 예외

EF 6.1.2

EF 6.1.2 런타임은 2014년 12월에 NuGet에서 릴리스되었습니다. 이 버전은 주로 버그 수정에 관한 것입니다. 또한 커뮤니티 구성원의 몇 가지 주목할 만한 변경 사항을 수락했습니다.

  • 쿼리 캐시 매개 변수가 app/web.configuration 파일에서 구성될 수 있음
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • DbMigration의 SqlFile 및 SqlResource 메서드를 사용하면 파일 또는 포함 리소스로 저장된 SQL 스크립트를 실행할 수 있습니다.

EF 6.1.1

EF 6.1.1 런타임은 2014년 6월에 NuGet에서 릴리스되었습니다. 이 버전에는 많은 사용자에게 발생한 문제에 대한 수정 사항이 포함되어 있습니다. 그중에서도 다음과 같습니다.

  • 디자이너: EF6 디자이너에서 10진수 정밀도로 EF5 edmx를 여는 동안 오류 발생
  • LocalDB의 기본 인스턴스 검색 논리가 SQL Server 2014에서 작동하지 않음

EF 6.1.0

EF 6.1.0 런타임은 2014년 3월에 NuGet에서 릴리스되었습니다. 이 사소한 업데이트에는 다음과 같은 많은 새로운 기능이 포함되어 있습니다.

  • 도구 통합은 새 EF 모델을 만드는 일관된 방법을 제공합니다. 이 기능은 기존 데이터베이스에서 리버스 엔지니어링을 포함하여 Code First 모델 만들기를 지원하도록 ADO.NET 엔터티 데이터 모델 마법사를 확장합니다. 이러한 기능은 이전에 EF Power Tools의 베타 품질에서 사용할 수 있었습니다.
  • 트랜잭션 커밋 오류를 처리는 새로 도입된 트랜잭션 작업을 가로채는 기능을 사용하는 CommitFailureHandler를 제공합니다. CommitFailureHandler는 트랜잭션을 커밋하는 동안 연결 오류로부터 자동 복구를 허용합니다.
  • IndexAttribute를 사용하면 Code First 모델의 속성(또는 여러 속성)에 [Index] 특성을 배치하여 인덱스를 지정할 수 있습니다. 그런 다음 Code First는 데이터베이스에 해당 인덱스를 만듭니다.
  • 공용 매핑 API는 EF가 데이터베이스의 열 및 테이블에 속성 및 형식을 매핑하는 방법에 대한 정보 액세스를 제공합니다. 이전 릴리스에서 이 API는 내부용이었습니다.
  • App/Web.config 파일을 통해 인터셉터를 구성하는 기능을 사용하면 애플리케이션을 다시 컴파일하지 않고 인터셉터를 추가할 수 있습니다.
  • System.Data.Entity.Infrastructure.Intercept.DatabaseLogger는 모든 데이터베이스 작업을 파일에 쉽게 기록할 수 있는 새로운 인터셉터입니다. 이전 기능과 함께 이 기능을 사용하면 다시 컴파일할 필요 없이 배포된 애플리케이션에 대한 데이터베이스 작업 로깅을 쉽게 전환할 수 있습니다.
  • 스캐폴드된 마이그레이션이 더 정확할 수 있도록 마이그레이션 모델 변경 검색이 개선되었으며, 변경 검색 프로세스의 성능도 향상되었습니다.
  • 성능 향상에는 초기화 중 데이터베이스 작업 감소, LINQ 쿼리에서 null 같음 비교 최적화, 더 많은 시나리오에서 더 빠른 보기 생성(모델 생성) 및 여러 연결이 있는 추적된 엔터티의 보다 효율적인 구체화가 포함되어 있습니다.

EF 6.0.2

EF 6.0.2 런타임은 2013년 12월에 NuGet에서 릴리스되었습니다. 이 패치 릴리스는 EF6 릴리스에서 도입된 문제(EF5 이후 성능/동작의 회귀)를 수정하는 것으로 제한됩니다.

EF 6.0.1

EF 6.0.1 런타임은 EF 6.0.0과 동시에 2013년 10월에 NuGet에 릴리스되었으며, 이는 후자가 몇 달 전에 잠근 Visual Studio 버전에 포함되어 있기 때문입니다. 이 패치 릴리스는 EF6 릴리스에서 도입된 문제(EF5 이후 성능/동작의 회귀)를 수정하는 것으로 제한됩니다. 가장 주목할 만한 변경 사항은 EF 모델을 준비하는 동안 몇 가지 성능 문제를 해결하는 것이었습니다. 이는 준비 성능이 EF6의 초점 영역이었기 때문에 중요했으며 이러한 문제는 EF6에서 확보한 다른 성능 향상 중 일부를 부정하는 것이었습니다.

EF 6.0

EF 6.0.0 런타임은 2013년 10월에 NuGet에 릴리스되었습니다. 이 버전은 전체 EF 런타임이 EntityFramework NuGet 패키지에 포함된 첫 번째 버전으로, .NET Framework의 일부인 EF 비트에 의존하지 않습니다. 런타임의 나머지 부분을 NuGet 패키지로 이동하려면 기존 코드에 대한 여러 호환성이 손상되는 변경이 필요했습니다. 업그레이드에 필요한 수동 단계에 대한 자세한 내용은 Entity Framework 6으로 업그레이드 섹션을 참조하세요.

이 릴리스에는 다양한 새로운 기능이 포함되어 있습니다. 다음 기능은 Code First 또는 EF 디자이너를 사용하여 만든 모델에 대해 작동합니다.

  • 비동기 쿼리 및 저장은 .NET 4.5에 도입된 작업 기반 비동기 패턴에 대한 지원을 추가합니다.
  • 연결 복원력을 사용하면 일시적인 연결 오류로부터 자동 복구할 수 있습니다.
  • 코드 기반 구성은 기존에 구성 파일에서 수행되었던 구성을 코드에서 수행하는 옵션을 제공합니다.
  • 종속성 해결은 서비스 로케이터 패턴에 대한 지원을 도입하며 사용자 지정 구현으로 대체할 수 있는 몇 가지 기능을 고려했습니다.
  • 인터셉션/SQL 로깅은 위에 빌드된 간단한 SQL 로깅을 사용하여 EF 작업의 인터셉션을 위한 하위 수준 구성 요소를 제공합니다.
  • 테스트 용이성을 개선하면 모의 프레임워크를 사용하거나 고유한 테스트 더블을 작성할 때 DbContext 및 DbSet에 대한 테스트 더블을 더 쉽게 만들 수 있습니다.
  • 이제 DbContext는 이미 열려 있는 DbConnection을 사용하여 만들 수 있으며, 컨텍스트를 만들 때 연결이 열릴 수 있는 시나리오(예: 연결 상태를 보장할 수 없는 구성 요소 간의 연결 공유)가 유용할 수 있습니다.
  • 향상된 트랜잭션 지원은 프레임워크 외부의 트랜잭션을 지원하고 프레임워크 내부에서 트랜잭션을 만드는 향상된 방법을 제공합니다.
  • .NET 4.0의 열거형, 공간 및 성능 향상 - .NET Framework가 있었던 핵심 구성 요소를 EF NuGet 패키지로 이동하면 .NET 4.0의 EF5에서 열거형 지원, 공간 데이터 형식 및 성능 향상을 제공할 수 있습니다.
  • LINQ 쿼리에서 Enumerable.Contains의 성능이 향상되었습니다.
  • 특히 대형 모델의 경우 준비 시간(보기 생성)이 향상되었습니다.
  • 플러그형 복수형 및 단수형 서비스가 제공됩니다.
  • 이제 엔터티 클래스에서 Equals 또는 GetHashCode의 사용자 지정 구현이 지원됩니다.
  • DbSet.AddRange/RemoveRange는 집합에서 여러 엔터티를 추가하거나 제거하는 최적화된 방법을 제공합니다.
  • DbChangeTracker.HasChanges는 데이터베이스에 저장할 보류 중인 변경 내용이 있는지 확인하는 쉽고 효율적인 방법을 제공합니다.
  • SqlCeFunctions는 SqlFunctions에 해당하는 SQL Compact를 제공합니다.

다음 기능은 Code First에만 적용됩니다.

  • 사용자 지정 Code First 규칙을 사용하면 반복적인 구성을 방지하는 데 도움이 되는 고유한 규칙을 작성할 수 있습니다. 더 복잡한 규칙을 작성할 수 있도록 간단한 규칙과 좀 더 복잡한 구성 요소를 위한 간단한 API를 제공합니다.
  • 이제 저장 프로시저 삽입/업데이트/삭제에 대한 Code First 매핑이 지원됩니다.
  • Idempotent 마이그레이션 스크립트를 사용하면 모든 버전에서 최신 버전으로 데이터베이스를 업그레이드할 수 있는 SQL 스크립트를 생성할 수 있습니다.
  • 구성 가능한 마이그레이션 기록 테이블을 사용하면 마이그레이션 기록 테이블의 정의를 사용자 지정할 수 있습니다. 이는 마이그레이션 기록 테이블이 올바르게 작동하도록 적절한 데이터 형식 등을 지정해야 하는 데이터베이스 공급자에게 특히 유용합니다.
  • 데이터베이스당 여러 컨텍스트는 마이그레이션을 사용하거나 Code First가 자동으로 데이터베이스를 만들 때 데이터베이스당 하나의 Code First 모델의 이전 제한을 제거합니다.
  • DbModelBuilder.HasDefaultSchema는 Code First 모델의 기본 데이터베이스 스키마를 한 곳에서 구성할 수 있는 새로운 Code First API입니다. 이전에는 Code First 기본 스키마가 "dbo"로 하드 코딩되었으며 테이블이 속한 스키마를 구성하는 유일한 방법은 ToTable API를 통해서였습니다.
  • DbModelBuilder.Configurations.AddFromAssembly 메서드를 사용하면 Code First Fluent API에서 구성 클래스를 사용할 때 어셈블리에 정의된 모든 구성 클래스를 쉽게 추가할 수 있습니다.
  • 사용자 지정 마이그레이션 작업을 사용하면 코드 기반 마이그레이션에 사용할 추가 작업을 추가할 수 있습니다.
  • Code First를 사용하여 만든 데이터베이스의 경우 기본 트랜잭션 격리 수준이 READ_COMMITTED_SNAPSHOT으로 변경되어 확장성과 교착 상태가 줄어듭니다.
  • 이제 엔터티 및 복합 형식이 중첩 클래스가 될 수 있습니다.

EF 5.0

EF 5.0.0 런타임은 2012년 8월에 NuGet에서 릴리스되었습니다. 이 릴리스에서는 열거형 지원, 테이블 반환 함수, 공간 데이터 형식 및 다양한 성능 향상을 비롯한 몇 가지 새로운 기능을 소개합니다.

Visual Studio 2012의 Entity Framework Designer에는 모델당 다중 다이어그램 지원, 디자인 화면의 도형 색 지정 및 저장 프로시저 일괄 가져오기도 도입되었습니다.

다음은 EF 5 릴리스를 위해 특별히 정리한 콘텐츠 목록입니다.

EF 4.3.1

EF 4.3.1 런타임은 EF 4.3.0 직후인 2012년 2월에 NuGet에 릴리스되었습니다. 이 패치 릴리스에는 EF 4.3 릴리스에 대한 몇 가지 버그 수정 사항이 포함되어 있으며 Visual Studio 2012에서 EF 4.3을 사용하는 고객을 위한 더 나은 LocalDB 지원이 도입되었습니다.

다음은 EF 4.3.1 릴리스를 위해 특별히 정리한 콘텐츠 목록이며, EF 4.1에 제공되는 대부분의 콘텐츠는 EF 4.3에도 계속 적용됩니다.

EF 4.3

EF 4.3.0 런타임은 2012년 2월에 NuGet에 릴리스되었습니다. 이 릴리스에는 Code First에서 만든 데이터베이스를 Code First 모델이 발전함에 따라 증분 방식으로 변경할 수 있는 새로운 Code First 마이그레이션 기능이 포함되어 있습니다.

다음은 EF 4.3 릴리스를 위해 특별히 정리한 콘텐츠 목록이며, EF 4.1에 제공된 대부분의 콘텐츠는 EF 4.3에도 계속 적용됩니다.

EF 4.2

EF 4.2.0 런타임은 2011년 11월에 NuGet에 릴리스되었습니다. 이 릴리스에는 EF 4.1.1 릴리스에 대한 버그 수정이 포함되어 있습니다. 이 릴리스에는 버그 수정만 포함되었기 때문에 EF 4.1.2 패치 릴리스일 수 있지만 4.2로 이동하여 4.1.x 릴리스에서 사용한 날짜 기반 패치 버전 번호에서 벗어나 유의적 버전용 유의적 버전 표준을 채택할 수 있도록 했습니다.

다음은 EF 4.2 릴리스를 위해 특별히 정리한 콘텐츠 목록이며, EF 4.1에 제공된 콘텐츠는 EF 4.2에도 계속 적용됩니다.

EF 4.1.1

EF 4.1.10715 런타임은 2011년 7월에 NuGet에서 릴리스되었습니다. 이 패치 릴리스에는 버그 수정 외에도 디자인 타임 도구가 Code First 모델에서 더 쉽게 작동할 수 있도록 몇 가지 구성 요소가 도입되었습니다. 이러한 구성 요소는 Code First 마이그레이션(EF 4.3에 포함됨) 및 EF Power Tools에서 사용됩니다.

패키지에 낯선 버전 번호 4.1.10715가 표시됩니다. 유의적 버전을 채택하기로 결정하기 전에는 날짜 기반 패치 버전을 사용했습니다. 이 버전은 EF 4.1 패치 1(또는 EF 4.1.1)로 간주됩니다.

다음은 4.1.1 릴리스를 위해 특별히 정리한 콘텐츠 목록입니다.

EF 4.1

The EF 4.1.10331 런타임은 2011년 4월에 NuGet에 처음으로 게시되었습니다. 이 릴리스에는 간소화된 DbContext API 및 Code First 워크플로가 포함되었습니다.

실제로는 4.1이어야 하는 낯선 버전 번호 4.1.10331이 표시됩니다. 또한 4.1.10311 버전은 4.1.0-rc여야 합니다('rc'는 '릴리스 후보'를 의미). 유의적 버전을 채택하기로 결정하기 전에는 날짜 기반 패치 버전을 사용했습니다.

다음은 4.1 릴리스를 위해 함께 특별히 정리한 콘텐츠 목록입니다. 대부분은 여전히 Entity Framework의 이후 릴리스에 적용됩니다.

EF 4.0

이 릴리스는 2010년 4월 .NET Framework 4 및 Visual Studio 2010에 포함되었습니다. 이 릴리스의 중요한 새로운 기능에는 POCO 지원, 외래 키 매핑, 지연 로드, 테스트 기능 개선, 사용자 지정 가능한 코드 생성 및 Model First 워크플로가 포함되었습니다.

이는 Entity Framework의 두 번째 릴리스였지만 제공된 .NET Framework 버전에 맞게 EF 4로 명명되었습니다. 이 릴리스 후에는 더 이상 .NET Framework 버전에 연결되지 않으므로 NuGet에서 Entity Framework를 사용할 수 있도록 하고 유의적 버전을 채택했습니다.

일부 후속 버전의 .NET Framework가 포함된 EF 비트에 대한 중요한 업데이트와 함께 제공되었습니다. 실제로 EF 5.0의 많은 새로운 기능은 이러한 비트에 대한 개선 사항으로 구현되었습니다. 그러나 EF에 대한 버전 관리 스토리를 합리화하기 위해 .NET Framework의 일부인 EF 비트를 EF 4.0 런타임으로 계속 참조하지만 모든 최신 버전은 EntityFramework NuGet 패키지로 구성됩니다.

EF 3.5

Entity Framework의 초기 버전은 2008년 8월에 릴리스된 .NET 3.5 서비스 팩 1 및 Visual Studio 2008 SP1에 포함되었습니다. 이 릴리스에서는 Database First 워크플로를 사용하여 기본 O/RM 지원을 제공했습니다.