BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicrosoftがEntity Framework Core 5.0 RC 1をリリース

MicrosoftがEntity Framework Core 5.0 RC 1をリリース

原文(投稿日:2020/09/20)へのリンク

Microsoftは先週、Entity Framework Core 5.0 RC1を.NET 5とともにリリースした。そのフレームワークは、11月に正式にデビューする前の最初の「go live」リリースである。EF Coreは、.NET用のオブジェクトデータベースマッパーであり、開発者が.NETオブジェクトを使用してデータベースを操作できるようにするものである。

このリリース候補版には、EF Core5.0で計画されているすべての機能が含まれている。新機能には、完全に透過的な多対多マッピング、タイプごとのテーブル継承、エンティティからクエリへのマッピング、FilteredインクルードおよびSplitインクルードのサポート、Required属性付きの1対1の依存関係、一般的なクエリの機能強化、およびパフォーマンス、移行、デプロイに対するエクスペリエンスの改善がある。

多対多は、EF Coreのバックログで最もリクエストされている機能である。EF Core 5.0は、結合テーブルを明示的にマッピングせずに多対多の関係をサポートするようになった。Migrations(またはEnsureCreated)を使用してデータベースを作成すると、結合テーブルが自動的に作成される。

プロパティバッグエンティティタイプも多対多の改善の一部であり、標準のCLRタイプをエンティティインスタンスに使用できるため、エンティティタイプごとに明示的なCLRタイプは必要ない。この機能を使用すると、Dictionaryをエンティティタイプとして使用でき、最終的には共有タイプのエンティティタイプとして使用でき、複数の異なるエンティティタイプにマップされる。

新しいバージョンのもう1つの重要な機能は、タイプごとのテーブル(TPT)マッピングである。これは、データベース内の個別のテーブルを使用して、継承階層内の各エンティティタイプのデータを保持する。この特定の問題は、「EFがDDDアプリケーション開発に受け入れられるための非常に重要な機能」としてオープンされており、EF Core 5.0 Preview 8以降で利用可能である。

FilteredとSplitのインクルードも、バックログで最も投票数の多い問題の2つであった。Filteredインクルードは、2015年以降、このリリースで対処された最も古い問題の1つである。これは、データベースインクルードを実行するときにフィルターをインラインで指定する機能を言っている。SplitインクルードはEF Core3.0で混入したパフォーマンス問題を指す。この問題は、指定されたLINQクエリに対して単一のSQLクエリを生成するときにデフォルトの動作が変更されたときに発生する。この変更により、複数のコレクションに対してインクルードを使用するクエリのパフォーマンスの問題が発生した。EF Core 5.0では、コレクションインクルードに対して複数のクエリを生成できるようになった。単一のクエリがあるとパフォーマンスが低下する。

EF Core 5.0では他にも重要な変更がある。それは、必要に応じて1対1の依存関係を構成するオプション、Npgsqlプロバイダーにおけるパフォーマンス改善、移行とデプロイのエクスペリエンスに関連する複数の改善である。当初計画されていたが、11月のリリースから除外された唯一の機能は、アーキテクチャ/コントリビュータドキュメントである。これは、コントリビュータがEF Coreの内部を理解しやすくすることを目的としたものである。EF Core 5.0のすべての機能の詳細リストはここにあり、すべての重要な変更はここにある。

EF Core 5.0は、.NET Standard2.1をサポートするプラットフォームのみで動作することに注意してください。この要件は、.NET Frameworkがサポートされるプラットフォームに含まれないことを意味するが、EF Core5.0が.NETCore 3.1で実行され、必ずしも.NET5を必要としないことも意味する。EF CoreはNuGetパッケージのセットとして個別に配布される。各EF Core 5.0パッケージへのすべてのリンクは、元のリリース投稿にある。

この記事に星をつける

おすすめ度
スタイル

BT