如何使用LIMIT关键字在ms sql中使用WIQL来查询TFS workItem

bea*_*com 5 tfs workitem tfs-sdk tfs-workitem wiql

我正在研究TFS API,我不知道TFS API有任何像LIMIT关键字或没有.我需要它进行分页.

谢谢

Gra*_*day 5

没有与LIMITTFS WIQL 中的 SQL关键字等效的内容,您需要自己实现分页。

一种方法是在第一次访问时检索所有结果,并缓存它们并自己分页。

另一种方法是在每次用户页面时动态构建 WIQL 查询。例如:

  1. 运行 WIQL 查询以仅返回与查询匹配的工作项 ID。 SELECT [System.Id] FROM WorkItems WHERE <conditions>
  2. 缓存该 ID 列表
  3. 将该 ID 列表分成与您的分页大小相匹配的组
  4. 每次您的用户页面时,通过 ID 明确请求工作项。 SELECT <fields> FROM WorkItems WHERE [System.Id] IN (10,11,12,13,14,15)

根据您要实现的目标,您还应该知道 TFS 工作项跟踪 API 在后台实现了字段值的分页/延迟加载,以最大限度地提高响应时间。您可以通过附加网络嗅探器并在 Visual Studio 中滚动大型工作项查询来了解其工作原理。

有关更多信息,请参阅字段值的分页

您可以通过选择您的代码将使用的所有字段来最大程度地减少到服务器的往返行程。以下代码进行一次查询往返,每次访问新页面时返回一页标题。

WorkItemCollection results = WorkItemStore.Query(
    "SELECT Title FROM Workitems WHERE (ID < 1000)");

foreach (WorkItem item in results)
{
    Console.WriteLine(item.Fields["Title"].Value);
}
Run Code Online (Sandbox Code Playgroud)

如果您的代码访问您未在 SELECT 子句中指定的字段,则该字段将添加到分页字段集中。执行另一个往返以刷新该页面以包括该字段的值。

  • @DavidFerenczyRogožan 有点晚了,但是您可以使用例如“$top=200”来限制 REST API 上的响应。如果您在“System.Id”上订购查询并构建一个动态查询,在其中存储上次调用返回的最后一个 ID,则一切都已准备就绪。 (2认同)