我正在尝试查询主TfsTeamProjectCollection
中的单个团队项目,该项目共包含194个团队项目。我确切知道如何从WorkItem
获取WorkItemStore
ID。问题是,通过这样做,API搜索集合中项目的 ALL ,查询大约需要一分钟。这太慢了,必须有一种直接从单个团队项目查询工作项的方法吗?这是我的代码:
private Uri collectionUri;
private TfsTeamProjectCollection projectCollection;
private WorkItemStore workItemStore;
public Project GetTeamProject()
{
projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri);
workItemStore = projectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFS_PROJECT_KEY];
return teamProject;
}
既然我对我感兴趣的团队项目感兴趣,我如何通过ID查询工作项目或者只是获取该项目中的所有工作项目?
答案 0 :(得分:36)
您可以尝试这样的方法来获取teamProject
中的所有WI:
WorkItemCollection workItemCollection = workItemStore.Query(
" SELECT [System.Id], [System.WorkItemType],"+
" [System.State], [System.AssignedTo], [System.Title] "+
" FROM WorkItems " +
" WHERE [System.TeamProject] = '" + teamProject.Name +
"' ORDER BY [System.WorkItemType], [System.Id]");
这是为了获得特定的WorkItem ID:
WorkItem workItem = workItemStore.GetWorkItem(555);
答案 1 :(得分:15)
对您感兴趣的use a query to find the workitems可能效率最高。您可以在查询中添加Where project ='@ Project',以将范围限制为该项目。通过首先调用BeginQuery然后调用EndQuery,您将获得一个仅针对您正在寻找的项目的工作项集合。
获取所需wql查询的最简单方法是在团队资源管理器中创建查询,然后使用file-&gt;另存为(在编辑模式下)将其保存到文件中。在记事本中打开该文件,将查询复制出来。
或者,您可以直接使用WorkItemStore.Query method来实现相同的目标。