コード検査: 関連エンティティに対するデータベースへの複数のクエリの可能性 (N+1 問題)
このインスペクションは、コレクションを反復するときに不必要なデータベース呼び出しが行われる N+1 セレクト問題を検出します。
この問題は次の例で説明できます。ここでは、Products と Details が 2 つのデータベーステーブルであり、各 Product エントリが複数の Detail エントリにリンクされています。
この問題を解決するために、ReSharper はエンティティフレームワークコアの Include 機能を使用することを提案しています。これにより、リンクされたすべての Detail エントリが最初のクエリで直接読み込まれます。
ナビゲーションプロパティ呼び出しのチェーンが長い場合、クイックフィックスは必要に応じて ThenInclude を追加します。
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
EF 固有コードインスペクション
ReSharper は、エンティティフレームワークプロジェクトに固有のコードの問題に対して、次のコードインスペクションを提供します。データベース関数はデータベース以外のコンテキストで呼び出されてはなりません警告関数は SQL に変換できないため、データベースコンテキストで呼び出すことはできません警告データベースに対する複数のクエリの可能性 (N+1 問題) 警告関連エンティティに対するデータベースへの複数のクエリの可能性 (N+1 問題) 提案文字列の長さが無制限であることによって発生する可能性のあ...
コード検査: クエリは関連エンティティの不完全なデータを返す可能性があります
このインスペクションは、一連のエンティティに対してクエリが実行され (たとえば、メソッドを使用して)、関連するエンティティが積極的にロードされたりクエリに明示的に含まれたりすることなくクエリ内でアクセスされる状況を報告します。これが発生すると、関連するエンティティがメモリに読み込まれず、それらのエンティティのデータが不完全または欠落する可能性があります。これにより、将来的に予期しない動作やエラーが発生する可能性があります。この問題を回避するには、メソッドを使用して関連エンティティを積極的にロード...