WIQL查询以获取工作项下的所有项目

时间:2017-09-21 21:26:54

标签: tfs wiql

我正在寻找一个查询,我可以从区域路径返回所有工作项及其关系。

例如:project 1

我需要所有精选的所有用户都映射到它所有工作项和Bug映射到用户档案,

简而言之,如果我从对象中获取了一个错误,我需要像父ID一样的东西,我可以与userstory匹配。

string query1 = " SELECT * FROM WorkItemLinks " +
                    " WHERE ( [System.IterationPath] Under 'iteration1' )" +
                    " AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' )" +
                    " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";

抛出如下错误

An exception of type 'Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException' occurred in Microsoft.TeamFoundation.WorkItemTracking.Client.dll but was not handled in user code

Additional information: TF51005: The query references a field that does not exist. The error is caused by «[System.IterationPath]».

当我检查dll的时候被正确引用,当我重写这样的查询时,查询工作正常

 string query = " SELECT * FROM WorkItems"+
                           " WHERE  ( [System.IterationPath] Under 'iteration1' )" +
                           //" AND  ([System.State] = 'Active' OR  [System.State] = 'Assessed' ) "+
                           //" AND  ( [Microsoft.VSTS.Scheduling.StartDate] <= '09/13/2017' AND  [Microsoft.VSTS.Scheduling.FinishDate] >= '09/13/2017' )"+
                           " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";

但是这个查询结果没有给出关系,如果工作项作为子项映射到其他我需要工作项对象中的父ID。怎么做到这一点。提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下查询:

为项目安装Nuget Package Microsoft.TeamFoundationServer.ExtendedClient

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using System;

namespace _0925_WIQL
{
    class Program
    {
        static void Main(string[] args)
        {
            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
                  new Uri("http://server:8080/tfs/CollectionLC"));
            WorkItemStore workItemStore = (WorkItemStore)tpc.GetService(typeof(WorkItemStore));


            string query1= " SELECT * FROM WorkItemLinks " +
                    " WHERE ( Source.[System.IterationPath] Under 'TeamProject\\Iteration 1' )" +
                    " AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' )" +
                    " ORDER BY [Microsoft.VSTS.Scheduling.StartDate]";

            Query query = new Query(workItemStore, query1);
            WorkItemLinkInfo[] witLinkInfos = query.RunLinkQuery();

            foreach (WorkItemLinkInfo witinfo in witLinkInfos)
            {

                .......
            }

此外,您还可以使用Wiql Editor。如果要从特定子工作项(ID)获取所有父工作项(ID),可以使用以下WIQL:

SELECT                      
        [System.Id],
        [System.WorkItemType],
        [System.Title],
        [System.AssignedTo],
        [System.State]
FROM workitemLinks
WHERE ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward')
AND ([Target].[System.Id] = 25)
ORDER BY [System.Id]
MODE (Recursive, ReturnMatchingChildren)
相关问题