TFS APIに取り組んでいますが、TFS APIにLIMITキーワードなどがあるかどうかわかりません。ページングには、TFSAPIが必要です。
ありがとう
TFS APIに取り組んでいますが、TFS APIにLIMITキーワードなどがあるかどうかわかりません。ページングには、TFSAPIが必要です。
ありがとう
TFS WIQL には SQL キーワードに相当するものはありませんLIMIT
。ページングを自分で実装する必要があります。
1 つの方法は、最初のアクセスですべての結果を取得し、それらをキャッシュして自分でページングすることです。
もう 1 つの方法は、ユーザーがページを表示するたびに WIQL クエリを動的に構築することです。例えば:
SELECT [System.Id] FROM WorkItems WHERE <conditions>
SELECT <fields> FROM WorkItems WHERE [System.Id] IN (10,11,12,13,14,15)
達成しようとしていることに応じて、応答時間を最大化するために、TFS Work Item Tracking API がフィールド値の内部でページング/遅延読み込みを実装していることも知っておく必要があります。ネットワーク スニファーを接続し、Visual Studio で大きな作業項目クエリをスクロールすると、これがどのように機能するかを確認できます。
詳細については、フィールド値のページングを参照してください。
コードで使用するすべてのフィールドを選択することで、サーバーへのラウンド トリップを最小限に抑えることができます。次のコードは、クエリに対して 1 回の往復を行い、新しいページがアクセスされるたびにタイトルのページを返すために 1 回の往復を行います。
WorkItemCollection results = WorkItemStore.Query(
"SELECT Title FROM Workitems WHERE (ID < 1000)");
foreach (WorkItem item in results)
{
Console.WriteLine(item.Fields["Title"].Value);
}
SELECT 句で指定していないフィールドにコードがアクセスする場合、そのフィールドはページ化されたフィールドのセットに追加されます。そのページを更新してそのフィールドの値を含めるために、別の往復が実行されます。
同じ問題がありました。Take
シーケンスに適用して、クエリによって得られる結果を制限しました。残念ながら、これはデータベースから返される結果を実際に制限するものではありませんが、この機能はサポートされていないため、実行可能なオプションを提供します。
Me.mWorkItems.Query(pstrSQL).OfType(Of WorkItem)().Take(5)
Skip
と を一緒に使用するとTake
、ページングに使用できます。