Entity Frameworkの - データベースのFuncは、テーブル全体のクエリを引き起こしました
間違ったクエリコードは、データベーステーブル全体のクエリが発生する - キラーのパフォーマンスのほとんどがあるEntity Frameworkのを使用して注意してください。
私たちは、一度会った、サンプルコード、以下を参照してください。
//错误的代码
のFunc <QuestionFeed、ブール>述語= NULL;
(タイプ== 1)であれば
{
述語= F => f.FeedID == ID && f.IsActive ==真。
}
他
{
述語= F => f.FeedID == ID。
}
//_questionFeedRepository.Entities的类型为のIQueryable <QuestionFeed>
_questionFeedRepository.Entities.Where(述語)。
上記のコード論理LINQクエリは条件、メソッドへのパラメータとして変数の型のFuncに応じて動的に生成されます。
パラメータの型が実際に必要とされる場合である:式<のFunc <TSOURCE、BOOL >>。
この問題は結果が正しい実行、コードを書いていないことに注意してください。SQL ServerプロファイラモニタのリリースはQuestionFeed対応するデータベーステーブルを見つけた後、私たちはこの場所の問題を知っている前に、完全なテーブルクエリがありました。
質問は次のとおりです。
メソッドは、クエリパラメータとして、Enitityフレームワーククエリが完全なテーブルを生成する変数の型のFunc LINQは、データベーステーブル全体のデータがメモリにロードされると、その後さらにクエリがメモリにどこ条件をベース。
ソリューション:
不要用のFunc <TSOURCE、ブール>、用式<のFunc <TSOURCE、BOOL >>。
//正确的代码
式<のFunc <QuestionFeed、ブール>>述語= NULL;
(タイプ== 1)であれば
{
述語= F => f.FeedID == ID && f.IsActive ==真。
}
他
{
述語= F => f.FeedID == ID。
}
_questionFeedRepository.Entities.Where(述語)。
間違ったクエリコードは、データベーステーブル全体のクエリが発生する - キラーのパフォーマンスのほとんどがあるEntity Frameworkのを使用して注意してください。
私たちは、一度会った、サンプルコード、以下を参照してください。
//错误的代码
のFunc <QuestionFeed、ブール>述語= NULL;
(タイプ== 1)であれば
{
述語= F => f.FeedID == ID && f.IsActive ==真。
}
他
{
述語= F => f.FeedID == ID。
}
//_questionFeedRepository.Entities的类型为のIQueryable <QuestionFeed>
_questionFeedRepository.Entities.Where(述語)。
上記のコード論理LINQクエリは条件、メソッドへのパラメータとして変数の型のFuncに応じて動的に生成されます。
パラメータの型が実際に必要とされる場合である:式<のFunc <TSOURCE、BOOL >>。
この問題は結果が正しい実行、コードを書いていないことに注意してください。SQL ServerプロファイラモニタのリリースはQuestionFeed対応するデータベーステーブルを見つけた後、私たちはこの場所の問題を知っている前に、完全なテーブルクエリがありました。
質問は次のとおりです。
メソッドは、クエリパラメータとして、Enitityフレームワーククエリが完全なテーブルを生成する変数の型のFunc LINQは、データベーステーブル全体のデータがメモリにロードされると、その後さらにクエリがメモリにどこ条件をベース。
ソリューション:
不要用のFunc <TSOURCE、ブール>、用式<のFunc <TSOURCE、BOOL >>。
//正确的代码
式<のFunc <QuestionFeed、ブール>>述語= NULL;
(タイプ== 1)であれば
{
述語= F => f.FeedID == ID && f.IsActive ==真。
}
他
{
述語= F => f.FeedID == ID。
}
_questionFeedRepository.Entities.Where(述語)。