2012-02-13 23 views
1

私のプロジェクトには、いくつかのRDLCグラフがあるページがあります。彼らはいくつかのストアドプロシージャとxsdで動作していました。データセットを制限するために結果に含まれるIDの文字列を渡します。これを変更しなければならなかったのは、オブジェクト・データ・セット・パラメーターの1000文字の制限を実行し始めたからです。ビジネスオブジェクトが遅いオブジェクトデータソース?

代わりにビジネスオブジェクトのリストでグラフを実行するように更新しました。これは、ページが以前より大幅に遅く読み込まれるようです。大幅に遅くなると、ページの読み込みに1分ほどかかることになります。

ビジネスオブジェクトを取得するときにオブジェクトデータソースが遅く実行されることがわかっている人はいますか?そうでない場合、問題の原因を正確に突き止める良い方法はありますか?私は実際にビジネスオブジェクトを取得する前と後に取得するブレークポイントを自分のメソッドに入れます。その方法は減速の原因とは思われません。

答えて

1

私はもう少しテストを行いました。データテーブルの代わりにビジネスオブジェクトにバインドすると、ちょっとした作業が大幅に遅くなるようです。

リスト< BusinessObject>をReportViewerにバインドするとき、ページの読み込みに1分9秒かかりました。

ビジネスロジックでListを返す同じ関数を使用し、レポートに必要な列のみを含むリストからDataTableを構築した場合、DataTableを20秒後にロードするレポートにバインドしました。

0

選択*を使用していますか?その場合は、テーブル全体を使用していない場合は、個々のフィールドを個別に選択してみてください。それは少し助けになります。

+0

私のビジネスロジックはエンティティフレームワークを使用し、ユーザーフィルタは要求されたアイテムのみをデータベースから取り出し、ビジネスオブジェクトに変換し、ObjectDataSourceが呼び出すメソッドによってリストに返します。興味深いもの: – William

0

@ウィリアム:私は同じ問題を経験しました。私は、ビジネスオブジェクトを平坦化すると、レポートが大幅に速く実行されることに気付きました。ビジネス・オブジェクトを新しいフラット・オブジェクトにマップする必要はなく、単にネストされたオブジェクトをnullに設定することもできます。私は:

foreach(var employee in employees) 
    { 
     employee.Department = null; 
     employee.Job = null; 
    } 

レポート作成者は、オブジェクトグラフを横断するいくつかのweiredものをしているようです。

これはVS 2010でのみ発生します.VS 2008では同じ問題が発生していないようです。

+0

それは知って良いです。ありがとうございました。 – William

関連する問題