Entity Frameworkの - データベースのFuncは、テーブル全体のクエリを引き起こした - データベースのFuncは、完全なテーブルクエリが表現Entity Frameworkのの母を引っ張る原因

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の

間違ったクエリコードは、データベーステーブル全体のクエリが発生する - キラーのパフォーマンスのほとんどがある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(述語)。
コードをコピー

おすすめ

転載: www.cnblogs.com/wfy680/p/12380793.html