Entity Framework の過去のリリース
Entity Framework の最初のバージョンは、.NET Framework 3.5 SP1 および Visual Studio 2008 SP1 の一部として、2008 年にリリースされました。
EF4.1 リリース以降、 EntityFramework NuGet パッケージ として出荷されています。これは NuGet.org で現在最も人気のあるパッケージの 1 つです。
バージョン 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 として設計されています。 現在、Microsoft の Entity Framework チームでは、EF Core が開発の主眼となっています。 そのため、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 ランタイムは、NuGet で 2017 年 10 月にリリースされました。 オープン ソースの共同作成者のコミュニティによる多大な尽力のおかげで、EF 6.2 には多数の バグ修正 と 製品の拡張機能が含まれています。
EF 6.2 ランタイムに影響を与える、特に重要な変更の簡単な一覧を次に示します。
- 永続的キャッシュから完了済みコードの最初のモデルを読み込むことで、起動時間が短縮される #275
- インデックスを定義する fluent API #274
- SQL で LIKE に変換される LINQ クエリの記述を有効にするための DbFunctions.Like() #241
- Migrate.exe で -script オプションがサポート #240
- EF6 で SQL Server のシーケンスで生成されたキーの値が使用可能に #165
- SQL Azure の実行方法に関する一時的なエラーのリストの更新 #83
- バグ: クエリまたは SQL コマンドの再試行が "The SqlParameter is already contained by another SqlParameterCollection" (この SqlParameter は別の SqlParameterCollection に既に含まれています) で失敗する #81
- バグ: DbQuery.ToString() の評価がデバッガーで頻繁にタイムアウトになる #73
EF 6.1.3
EF 6.1.3 ランタイムは、NuGet で 2015 年 10 月にリリースされました。 このリリースには、6.1.2 リリースで報告された優先度の高い欠陥と回帰に対する修正のみが含まれています。 修正は次のとおりです。
- クエリ: EF 6.1.2 の回帰: OUTER APPLY で導入された、1:1 リレーションシップと "let" 句に対するより複雑なクエリ
- 継承されたクラスの基底クラス プロパティを非表示にする場合の TPT の問題
- テキストに "go" という単語が含まれていると、DbMigration.Sql が失敗する
- UnionAll と Intersect のフラット化サポートの互換性フラグを作成する
- 複数の Includes を含むクエリが 6.1.2 で機能しない (6.1.1 では機能する)
- EF 6.1.1 から 6.1.2 にアップグレードした後の "SQL 構文でエラーが発生しました" という例外
EF 6.1.2
EF 6.1.2 ランタイムは、NuGet で 2014 年 12 月にリリースされました。 このバージョンは、ほとんどがバグの修正に関するものです。 また、コミュニティのメンバーから、次のような注目すべき変更を受け入れました。
- クエリ キャッシュ パラメーターは、app/web.configuration ファイルから構成できます
<entityFramework> <queryCache size='1000' cleaningIntervalInSeconds='-1'/> </entityFramework>
- DbMigration の SqlFile メソッドと SqlResource メソッド を使用すると、ファイルまたは埋め込みリソースとして格納されている SQL スクリプトを実行できます。
EF 6.1.1
EF 6.1.1 ランタイムは、NuGet で 2014 年 6 月にリリースされました。 このバージョンには、多数のユーザーが遭遇した問題の修正が含まれています。 特に、次のようなものです。
- デザイナー: EF6 デザイナーで EF5 edmx を 10 進精度で開くとエラーが発生する
- LocalDB の既定インスタンス検出ロジックが SQL Server 2014 で機能しない
EF 6.1.0
EF 6.1.0 ランタイムは、NuGet で 2014 年 3 月にリリースされました。 このマイナー更新には、次のような多くの新機能が含まれています。
- ツールの統合 により、新しい EF モデルを一貫した方法で作成できます。 この機能は、既存データベースからのリバース エンジニアリングも含め、 Code First モデルの作成をサポートするために ADO.NET Entity Data Model ウィザードを拡張したものです。 これらの機能は、以前は EF Power Tools のベータ品質で利用できました。
- トランザクションのコミット エラーの処理 では、トランザクション操作をインターセプトする新しく導入された機能を利用する CommitFailureHandler が提供されます。 CommitFailureHandler を使用すると、トランザクションのコミット中に、接続エラーからの自動復旧を行うことができます。
- IndexAttribute を使用すると、Code First モデルのプロパティに
[Index]
属性を配置することで、インデックスを指定できます。 その後、対応するインデックスが Code First によってデータベース内に作成されます。 - パブリック マッピング API により、プロパティと型をデータベース内の列とテーブルにマップする方法に関する EF の情報にアクセスできます。 過去のリリースでは、この API は内部的でした。
- App/Web.config ファイルを使用してインターセプターを構成する機能 により、アプリケーションを再コンパイルすることなくインターセプターを追加できます。
- System.Data.Entity.Infrastructure.Interception.DatabaseLoggerは、すべてのデータベース操作をファイルに簡単にログ記録できるようにする新しいインターセプターです。 前出の機能と組み合わせて使用すると、再コンパイルを必要とせずに、 デプロイされたアプリケーションのデータベース操作のログ記録を簡単に切り替えることができます。
- 移行モデル変更の検出 が改善され、スキャフォールディングされた移行がより正確になりました。また、変更検出プロセスのパフォーマンスも向上しています。
- パフォーマンスの向上 には、データベース操作の削減、LINQ クエリでの null 等値比較の最適化、より多くのシナリオでのより高速なビュー生成 (モデルの作成)、複数のアソシエーションを持つ追跡対象エンティティのより効率的な具体化などが含まれます。
EF 6.0.2
EF 6.0.2 ランタイムは、NuGet で 2013 年 12 月にリリースされました。 このパッチ リリースは、EF6 リリースで発生した問題 (EF5 以降のパフォーマンス/動作の回帰) の修正に限定されています。
EF 6.0.1
EF 6.0.1 ランタイムは、EF 6.0.0 と同時に NuGet で 2013 年 10 月にリリースされました。これは、後者が、数か月前にロックダウンされたバージョンの Visual Studio に埋め込まれていたためです。 このパッチ リリースは、EF6 リリースで発生した問題 (EF5 以降のパフォーマンス/動作の回帰) の修正に限定されています。 最も注目すべき変更点は、EF モデルのウォームアップ中のパフォーマンスの問題を修正することでした。 ウォームアップのパフォーマンスは EF6 の焦点となる分野であり、EF6 に加えられた他のパフォーマンス向上の一部がこの問題によって台無しになっていたため、これは重要でした。
EF 6.0
EF 6.0.0 ランタイムは、NuGet で 2013 年 10 月にリリースされました。 これは、.NET Framework に含まれている EF ビットには依存しない完全な EF ランタイムが EntityFramework NuGet パッケージ に含まれている最初のバージョンです。 ランタイムの残りの部分を NuGet パッケージに移動するには、既存のコードに対する多くの破壊的変更が必要でした。 アップグレードに必要な手動手順の詳細については、「Entity Framework 6 へのアップグレード」を参照してください。
このリリースには、多くの新機能が含まれています。 Code First または EF デザイナーで作成されたモデルでは、次の機能が使用できます。
- 非同期クエリと保存 では、.NET 4.5 で導入されたタスク ベースの非同期パターンのサポートが追加されます。
- 接続の回復性 により、一時的な接続エラーからの自動復旧が可能になります。
- コードベースの構成 では、従来は構成ファイルで実行されていた構成を、コードで実行するオプションが提供されます。
- 依存関係の解決 では、サービス ロケーター パターンのサポートが導入され、カスタム実装に置き換えることができる機能の一部は取り除かれています。
- インターセプト/SQL ログ記録 は、EF 操作をインターセプトするための低レベルの構成ブロックと、その上に構築された単純な SQL ログ記録を提供します。
- テストの容易性の向上 により、 モック フレームワークを使用する 場合や 独自のテスト ダブルを作成する場合に、DbContext および DbSet のテスト ダブルを簡単に作成できるようになります。
- 既に開かれている DbConnection を使用して DbContext を作成 できるようになったので、コンテキストの作成時に接続を開いておけると役立つようなシナリオ (接続の状態を保証できないコンポーネント間の接続の共有など) が可能になります。
- トランザクション サポートの強化 により、フレームワークの外部にあるトランザクションのサポートに加え、フレームワーク内でトランザクションを作成するための向上した方法が提供されます。
- .Net 4.0 での列挙型、空間、およびパフォーマンスの向上 -.NET Framework に含まれていたコア コンポーネントを EF NuGet パッケージに移動することで、列挙型のサポート、空間データ型、および EF5 からのパフォーマンス向上を .NET 4.0 で実現できるようになりました。
- LINQ クエリ の Enumerable.Contains のパフォーマンスが向上しました。
- ウォームアップ時間 (ビューの生成) が、特に大規模なモデルで向上しました。
- プラグ可能な複数形化 & 単数形化サービス。
- Equals または GetHashCode のカスタム実装 がエンティティ クラスでサポートされるようになりました。
- DbSet.AddRange/RemoveRange によって、セットに対して複数のエンティティを追加または削除するための最適化された方法が提供されます。
- DbChangeTracker.HasChanges を使用すると、データベースに保存されている保留中の変更があるかどうかを簡単かつ効率的に確認できます。
- SqlCeFunctions により、SqlFunctions に相当する SQL Compact が提供されます。
次の機能は Code First にのみ適用されます。
- カスタム Code First 規則 を使用すると、繰り返し構成を避けるために独自の規則を記述できます。 簡易規則用の単純な API と、より複雑な規則を作成できるようにする複雑な構成ブロックが用意されています。
- 挿入/更新/削除のストアド プロシージャに対する Code First のマッピング がサポートされるようになりました。
- べき等移行スクリプト を使用すると、最新バージョンまでの任意のバージョンのデータベースをアップグレードできる SQL スクリプトを生成できます。
- 構成可能な移行履歴テーブル を使用すると、移行履歴テーブルの定義をカスタマイズできます。 これは、移行履歴テーブルが正常に機能するように適切なデータ型などを指定する必要のあるデータベース プロバイダーに特に便利です。
- データベースあたり複数のコンテキスト は、Migrations を使用する場合、またはデータベースが Code First で自動的に作成される場合に、データベースあたり 1 つの Code First モデルという以前の制限が除去します。
- DbModelBuilder.HasDefaultSchema は、Code First モデルの既定のデータベース スキーマを 1 か所で構成できる新しい Code First API です。 以前は、Code First の既定のスキーマは "dbo" にハードコーディングされており、テーブルが属しているスキーマを構成する唯一の方法は ToTable API を使用することでした。
- DbModelBuilder.Configurations.AddFromAssembly メソッド を使用すると、Code First Fluent API で構成クラスを使用している場合に、アセンブリで定義されているすべての構成クラスを簡単に追加できます。
- カスタムの移行操作 を使用すると、コードベースの移行で使用する操作を追加できます。
- Code First を使用して作成されたデータベースでは、 既定のトランザクション分離レベルが READ_COMMITTED_SNAPSHOT に変更 され、スケーラビリティが向上し、デッドロックが減少します。
- エンティティ型と複合型を nestedinside クラスにすることができるようになりました。
EF 5.0
EF 5.0.0 ランタイムは、NuGet で 2012 年 8 月にリリースされました。 このリリースでは、列挙型のサポート、テーブル値関数、空間データ型、さまざまなパフォーマンスの向上など、いくつかの新機能が導入されています。
Visual Studio 2012 の Entity Framework Designer では、モデルあたり複数のダイアグラム、デザイン サーフェイスでの図形の色分け、ストアド プロシージャの一括インポートのサポートも導入されています。
EF 5 リリース用にまとめたコンテンツの一覧を次に示します。
- EF 5 リリースの投稿
- EF5 の新機能
- モデルの設定
- モデルの作成
- 接続とモデル
- パフォーマンスに関する考慮事項
- Microsoft SQL Azure の使用
- 構成ファイルの設定
- 用語集
- Code First
- EF デザイナー
- モデルの使用
EF 4.3.1
EF 4.3.1 ランタイムは、EF 4.3.0 の後すぐに、NuGet で 2012 年 2 月にリリースされました。 このパッチ リリースでは、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 ランタイムは、NuGet で 2012 年 2 月にリリースされました。 このリリースには、Code First によって作成されたデータベースを Code First モデルの進化に伴って増分方式で変更できるようにする新しい Code First Migrations 機能が含まれていました。
EF 4.3 リリース用にまとめたコンテンツの一覧を次に示します。EF 4.1 用に提供されているコンテンツの大部分は EF 4.3 にも適用されます。
EF 4.2
EF 4.2.0 ランタイムは、NuGet で 2011 年 11 月にリリースされました。 このリリースには、EF 4.1.1 リリースのバグ修正が含まれています。 このリリースにはバグ修正のみが含まれていたため、EF 4.1.2パッチ リリースにすることもできましたが、4.1.xリリースで使用していた日付ベースのパッチ バージョン番号から移行し、セマンティック バージョニングに セマンティック バージョニング 標準 を採用 できるように、4.2に移行することを選択しました。
EF 4.2 リリース用にまとめたコンテンツの一覧を次に示します。EF 4.1 用に提供されているコンテンツは EF 4.2 にも適用されます。
EF 4.1.1
EF 4.1.10715 ランタイムは、NuGet で 2011 年 7 月にリリースされました。 バグの修正に加えて、このパッチ リリースでは、デザイン時のツールで Code First モデルを操作しやすくするために、いくつかのコンポーネントが導入されました。 これらのコンポーネントは、Code First Migrations (EF 4.3 に含まれています) と EF Power Tools によって使用されます。
パッケージのバージョン番号が奇妙な 4.1.10715 となっていることがわかるでしょう。 セマンティック バージョン管理を採用する前は、日付ベースのパッチ バージョンを使用していました。 このバージョンは、EF 4.1 パッチ 1 (または EF 4.1.1) と考えてください。
4.1.1 リリース用にまとめたコンテンツの一覧を次に示します。
EF 4.1
EF 4.1.10331 は、NuGet で 2011 年 4 月に公開された最初のランタイムでした。 このリリースには、簡略化された DbContext API と Code First ワークフローが含まれていました。
バージョン番号が奇妙な 4.1.10331 となっていることがわかるでしょう。これは、実際には 4.1 となるはずでした。 さらに、4.1.0-rc となるはずであった 4.1.10311 バージョンがあります ('rc' は 'リリース候補' を表します)。 セマンティック バージョン管理を採用する前は、日付ベースのパッチ バージョンを使用していました。
4.1 リリース用にまとめたコンテンツの一覧を次に示します。 その多くは、Entity Framework の後続のリリースにも適用されます。
- EF 4.1 リリースの投稿
- Code First のチュートリアル
- モデル & Database First のチュートリアル
- SQL Azure フェデレーションと Entity Framework
EF 4.0
このリリースは、2010 年 4 月の .NET Framework 4 および Visual Studio 2010 に含まれていました。 このリリースの重要な新機能には、POCO サポート、外部キー マッピング、遅延読み込み、テストの容易性の向上、カスタマイズ可能なコード生成、Model First ワークフローなどがありました。
Entity Framework の 2 番目のリリースでしたが、付属していた .NET Framework のバージョンに合わせて EF 4 という名前が付けられました。 このリリースの後は、NuGet で Entity Framework の提供を開始し、.NET 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 Service Pack 1 および Visual Studio 2008 SP1 に含まれていました。 このリリースでは、Database First ワークフローを使用して基本的な O/RM のサポートが提供されました。
.NET