2

PredicateBuilder を使用しています。つまり、AsExpandable 拡張メソッドを使用しています。問題は、ObjectQuery.ToTraceString() 呼び出しを実行できるようにクエリを ObjectQuery にキャストしようとすると、次のエラーがスローされるため、SQL クエリをトレースできなくなったことです...

タイプ 'LinqKit.ExpandableQuery`1[Genesis.Person]' のオブジェクトをタイプ 'System.Data.Objects.ObjectQuery' にキャストできません。

何か案は?

4

3 に答える 3

5

LINQPadのクエリで Dump() を実行し、SQL タブを使用して生成された SQL を確認することをお勧めします。これを行い、LINQPad を Entity Framework コンテキストに接続し、F4 キーを押して LinqKit.dll への参照を含め、LinqKit を名前空間のインポートとして含めます。これを行う方法について追加のガイダンスが必要な場合はお知らせください。

于 2009-10-02T18:11:14.723 に答える
3

LinqKit の代わりに、次のユニバーサル PredicateBuilder を使用します。

http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/

その後、 ObjectQuery.ToTraceString() は期待どおりに機能します。

于 2011-10-24T23:56:22.463 に答える
1

私はあなたの正確な問題に精通していませんが、代わりに SQL サーバーでトレースを実行できませんか (MSSQL を想定したプロファイラーなど) ?

これにより、実行されたクエリを表示でき、記録されるのは自分のマシンだけに制限できます...

于 2009-09-30T13:43:11.023 に答える