Моя конечная цель - рекурсивно получить родительский элемент для одного рабочего элемента за раз, пока в иерархии больше не останется родителей. На данный момент еще нет ничего рекурсивного, я все еще нахожусь на этапе оптимизации способа получения родительского рабочего элемента. Я придумал способ сделать это с помощью запроса:
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"];
Куда мне идти дальше?