2011-07-22 6 views
2

与えられたプロジェクトの開いているワークアイテムのリストをプログラムで取得しようとしています。 Webを介した検索では、これを行うための唯一の方法は、WorkItemStore APIを使用してクエリを実行することです。プログラムでTFS 2010で特定のプロジェクトの開いているワークアイテムのリストを取得する

私が抱えている主な問題は、ワークアイテムストアの取得には約2分かかります。私はその後それをキャッシュしますが、最初のヒットは容認できません。それを超えて、私のアプリケーションは、新しい作業項目が追加された場合にx分ごとにリフレッシュする必要があります。

WorkItemStoreを使用せずに、プロジェクトに関連付けられている開いている作業項目のリストを取得する方法はありますか。私は作業項目番号とオプションでタイトルのみが必要です。他の情報は必要ありません。

もしそうでなければ、私が間違っていることや、パフォーマンスが非常に遅くなるTFSサーバー(おそらくインデックスがない)に何か問題がありますか?私は途中でそれを手に入れるさまざまな方法を試しました。彼らはすべて非常に遅いです。

WorkItemStore store = (WorkItemStore)tfs.GetService(typeof(WorkItemStore)); 

または

workItemStore = new WorkItemStore(tfsTeamProjectCollection); 

または

workItemStore = new WorkItemStore(tfsServerName); 

この問題で任意の助けいただければ幸いです。

+0

TFSサーバーはリモートビルディングにありますか?私は、WorkItemStoreに2〜2秒以上かかることはありませんでした。 –

答えて

0

信じられないほど大きなDBでも、2分の遅延はないはずです。

私はSQLプロファイラを読み込み、生成されたクエリを見て作業項目を取得します。そこから、クエリのどの部分が遅延を引き起こしているのかを特定することができます。

また、TFSデータベースと同じボックスでクエリを実行し、それが問題であるかどうかを確認することもできます。上記のコメントが指摘しているように、リモート接続は確かに遅延を引き起こす可能性があります。

問題が解決しない場合は、プロジェクトのサイズ(問題ではない)、TFSインストール構成(サーバーはどこにあり、どのようにセットアップされているか)、およびハードウェアに。

関連する問題