1

LinqKit を使用して、動的に生成されたフィルターを使用してクエリを作成しています。

このクエリは、データベースから非常に大きなオブジェクト グラフをフェッチして計算を実行し、そのデータに対してその他の変更を行います。クエリで使用Includesしない限り、必要なメイン エンティティをデータベースから取得するのに時間はかかりません。しかし、残念ながら、必要な計算を実行するには、関連するエンティティの多くが必要です。

を追加するたびに、これは SQL の新しいネストされたサブクエリIncludeに変換されます。私は約 8 または 9 を持っているので、これは多くのネストされたサブクエリに変換されます。そのクエリはデータを返すのに永遠にかかります。Inlcudes

これらのネストされたサブクエリをすべて SQL から消したいと思っていますが、アプリケーション側から LinqKit を使用して SQL を思いどおりに形作るのはちょっと難しいです。

その特定のケースでは、ストアド プロシージャを SQL を希望どおりに記述し、Entity Framework から呼び出すことをお勧めします。

私の問題は、ストアド プロシージャを使用してアプリケーション側でオブジェクト グラフを取得する方法がわからないことです。単一の「エンティティ」にすべてのデータを含めるEF を生成することができますComplexTypeが、計算を行うコードは特定のエンティティ オブジェクト グラフ(メイン エンティティとそれに関連するエンティティ) を待機するため、コードはそれが何であるかわかりませんComplexType。それを使用するために計算エンジンを書き直す必要はありませんComplexType。結果を単一のエンティティにマップできますが、そのエンティティのみが返されます。関連エンティティも返してほしい。

私は岩とクレイジーな場所の間に挟まれているようです.

誰でも何か提案できますか?

4

1 に答える 1

0

私たちも同様の問題を抱えていました。最終的に SQL ビューを作成し、代わりにビューに対してクエリを実行します。また、CQRSパターンからのアイデアだと思います。基本的に、読み取りモデルと書き込みモデルを分離します。

于 2013-07-19T13:11:41.593 に答える