我在使用TFS API时遇到了一个简单的问题,当我获取工作项时,无法获取工作项的Effort数据。我的想法是通过特定的条件从TFS获取工作项,然后更改Effort数据并将其保存回TFS。现在我可以获取工作项,并通过字段更新任何数据,但我没有找到如何获取和更新Effort的方法。
从TFS获取数据的查询如下图所示:
从TFS获取数据的查询如下图所示:
SELECT * FROM WorkItems WHERE [System.WorkItemType] = 'Task' AND [Assigned to] = 'name'
ORDER BY [System.WorkItemType], [System.Id]
这是获取字段的代码:
public void getDataFromTfs()
{
Console.WriteLine("Getting data from TFS to Store");
Console.WriteLine("*********************");
setQuery();
Console.WriteLine("Query" + byTasksModified.ToString());
Console.WriteLine("*********************");
Console.ReadLine();
credentials = new System.Net.NetworkCredential("xxxxx", "xxxxxx", "xxxxx");
TfsTeamProjectCollection teamProjectCollection =
new TfsTeamProjectCollection(new Uri(@"LINK HERE"), credentials);
teamProjectCollection.EnsureAuthenticated();
Store = (WorkItemStore) teamProjectCollection.GetService(typeof(WorkItemStore));
WIC = Store.Query(byTasksAssignedTo);
Console.WriteLine("Data fetched into Store");
foreach (WorkItem workItem in WIC)
{
Console.WriteLine("ID: {0}", workItem.Id);
Console.WriteLine("Title: {0}", workItem.Title);
}
}
这里我正在通过特定查询获取所有需要的任务,然后我有一个方法来获取特定的任务。
public void getSpecificWorkItemData()
{
workItem = Store.GetWorkItem(64);
Console.WriteLine("ID: {0}", workItem.Id);
Console.WriteLine("Title: {0}", workItem.Title);
workItem.Open();
Console.ReadLine();
}
然后我有一个任务的更新方法
public void updateWorkItem()
{
workItem.Fields["Assigned to"].Value = "NAME";
if (workItem.IsValid() == false)
{
Console.WriteLine("Item is not valid");
}
else
{
try
{
workItem.Save();
}
catch (ValidationException exception)
{
Console.WriteLine("Error saving work item!");
Console.WriteLine(exception.Message);
}
Console.WriteLine("Item Saved");
workItem.Close();
Console.ReadLine();
}
}