Oracle Entity Framework Core 9の機能

Oracleでは、このページで説明されているEF Core 9機能をサポートしています。このページでは、標準のEF Core 9機能とOracleのサポートとの違いについて説明します。

これらの各機能の標準機能の詳細は、「EF Core 9の新機能」Webページを参照してください。

ベクトル類似検索

Oracle EF Core 9では、密Oracle Databaseベクトルに関してVectorDistanceVectorEmbeddingおよびToVector EF関数がサポートされています。デフォルトのベクトル型マッピングは、.NET文字列型からプリミティブ配列型に変更されています。

Oracle EF Core 23.8以降では、Oracle Databaseスパース・ベクトルもサポートされています。また、このリリースでは、EF Coreとともに使用する場合は、密ベクトルについてはネイティブOracleVectorプロバイダ・タイプ、スパース・ベクトルについてはOracleSparseVectorプロバイダ・タイプがサポートされています。

複合型: GroupByおよびExecuteUpdate

複合型では、複合型インスタンスによるグループ化と、ExecuteUpdateを使用した更新の2つの方法が、新しくOracle EF Coreでサポートされています。

不要なSQL要素のプルーニング

EF Coreの以前のリリースでは、生成されたSQLに不要な要素が含まれていました。Oracle EF Core 9では、これらの不要な表およびプロジェクション列がプルーニングされます。これにより、よりコンパクトなSQLが生成され、より効率的になる場合もあります。

表のプルーニングでは、SQL JOIN内の不要な表が削除されます。

プロジェクションのプルーニングでは、副問合せ内の不要なプロジェクション列が排除されます。

問合せのパラメータ化の強制または防止

Oracle EF Coreでは、EF.ConstantまたはEF.Parameterメソッドを使用して、生成された問合せに対して、パラメータ値(EF.Constant)またはパラメータ変数(EF.Parameter)を使用するように指示できます。Oracle EF Core 9では、EF.Parameterがサポートされるようになりました。

非相関副問合せのインライン化

EF Core 8では、別のLINQで参照されているIQueryableインタフェースが、別のデータベース・ラウンド・トリップで実行されます。これにより、複数のラウンド・トリップが発生し、パフォーマンスが低下します。

Oracle EF Core 9では、1回のラウンドトリップで副問合せ(IQueryable)およびLINQを実行できるようになりました。

Count != 0を使用した問合せの最適化

Oracle EF Core 8では、LINQ問合せがSQLのCOUNT関数を使用するように変換される場合がありました。EF Core 9では、これらのLINQ問合せで、より効率的なSQLのEXISTSが使用されます。

新しいToHashSetAsync<T>メソッド

Oracle EF Coreでは、非同期バージョンのEnumerable.ToHashSet<T>が追加されています。このメソッドは、問合せ結果をHashSetとして返します。

データのシードの向上

Oracle EF Coreには、初期データ・セットをデータベースに簡単に移入する方法があります。これはデータのシードと呼ばれています。DbContextOptionsBuilderに、新しいUseSeedingおよびUseAsyncSeedingメソッドが導入されおり、EnsureCreatedまたはEnsureCreatedAsyncの操作中にDbContextが初期化される際に実行されます。

モデルの自動コンパイルとMSBuildの統合

EF Coreのモデルがコンパイルされることにより、数百のエンティティ・タイプが設定された大規模なモデルのアプリケーション起動時間が短くなります。以前は、コマンド・ラインを使用してコンパイル済モデルを手動で生成していました。次に、UseModelメソッドで、EF Coreがそれらを使用するように指示していました。

Oracle EF Core 9では、コンパイル済のモデルを自動的に検出して使用できるため、UseModelが不要になりました。さらに、エンティティ・タイプまたはDbContextが変更されると、モデル・プロジェクトのビルド時にMSBuildがコンパイル済モデルを自動的に更新します。

既存のモデル構築規則の拡張性の強化

Oracle EF Core 9では、プロパティ・マッピング・コードなど、パブリック・モデル構築規則の一部を簡単に拡張できます。

非パブリック・コンストラクタを呼び出すためのApplyConfigurationsFromAssemblyの更新

ApplyConfigurationsFromAssemblyメソッドは、パブリックに加えて、非パブリックのコンストラクタからもインスタンス化できるようになりました。また、このコンストラクタのパラメータなしの形式でインスタンス化に失敗したときのエラー・メッセージが改善されました。

サポートされていない機能

Oracle EF Core 9のプロバイダは、次の機能をサポートしていません:

  • 同時移行に対する保護(移行中のデータベース・ロックとも呼ばれる)

  • 読取り専用プリミティブ・コレクション