我的最终目标是获得一个工作项目的母体在时间递归,直到没有更多的家长在层次中。目前,没有任何递归然而,我仍然是优化我得到父母的工作项目的方式点。我已经想到了这样做涉及查询的一种方式:TFS API - 如何获取一个工作项的父
public WorkItem GetParentWorkItem(int id)
{
StringBuilder queryString = new StringBuilder("SELECT [System.Id]" +
" FROM WorkItemLinks " +
" WHERE [Source].[System.WorkItemType] = '" + TFS_TIMESHEET_WORK_ITEM_TYPE + "'" +
" AND [Source].[System.TeamProject] = '" + TFS_TIMESHEET_PROJECT_KEY + "'" +
" AND [Source].[System.Id] = " + id
);
Query wiQuery = new Query(GetWorkItemStore, queryString.ToString());
WorkItemLinkInfo[] wiTrees = wiQuery.RunLinkQuery();
WorkItem wi = GetWorkItemStore.GetWorkItem(wiTrees[1].TargetId);
return wi;
}
这种方法的问题是,它得到的所有链接的工作项,其中包括前任继任者,儿童和家长。我知道wiTrees[1]
是父工作项,所以我硬编码的索引。
我找到了一种方式来获得从工作项目存储“父” WorkItemTypeEnd
对象:
WorkItemLinkTypeEnd linkTypEnd = GetWorkItemStore.WorkItemLinkTypes.LinkTypeEnds["Parent"];
我在哪里何去何从?
您可以使用模式(mustcontain)获取仅使用指定的链接类型的查询扩展您的查询,你肯定知道你检索这样是正确的:'SELECT [System.Id] FROM WorkItemLinks WHERE([来源] [System.WorkItemType] = '用户故事'。) 和([System.Links.LinkType] = '父')) 模式(MustContain)'(参见:http://msdn.microsoft.com/en-us/library/bb130306.aspx#sectionToggle2) – jessehouwing 2012-02-20 22:33:16