コード検査: データベース関数はデータベース以外のコンテキストで呼び出されてはなりません
この問題は、データベース内で (通常は LINQ to Entities クエリの一部として) 実行されるメソッドをそのコンテキスト外で呼び出そうとした場合に報告されます。
たとえば、Entity フレームワークは、EF.Functions.Like()
や EF.Functions.DateDiffDay()
など、LINQ to Entities クエリ内での使用を目的としたメソッドをいくつか提供します。これらのメソッドには意味のある実装はなく、エンティティフレームワークが対応する SQL 関数またはステートメントに変換するためのマーカーとして機能します。
LINQ to Entities クエリの外部で呼び出された場合、SQL に変換するクエリはなくなり、代わりにこれらのメソッドは .NET メソッドとして実行されますが、これは無意味であり、エラーになる可能性があります。
この問題を解決するには、そのようなメソッドがエンティティフレームワークによって SQL に変換される LINQ クエリ内でのみ呼び出されるようにしてください。
以下の例では、LINQ to Entities クエリコンテキストの外で EF.Functions.Like()
を使用することに問題があります。これを修正するには、LINQ to Entities クエリ内に EF.Functions.Like()
呼び出しを挿入します。
関連ページ:
![](https://resources.jetbrains.com/help/img/dotnet/2024.1/inspection_severity_change.png)
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
![](https://pleiades.io/icons/resharper.png)
コード検査: このプロパティによって定義された関係は、依存関係ループにコントリビュートする
このインスペクションは、エンティティフレームワークのコンテキストで使用されるクラス間の依存関係を報告します。以下の例では、との間の双方向の関係がサイクルを形成します。つまり、には (型) があり、各には (型) があります。public class Person { public int Id { get; set; } public IList<Animal> Pets { get; } } public class Animal { public int Id { get; set;...