Вопрос по c#-4.0, .net – Получение рабочих элементов и связанных с ними рабочих элементов в одном запросе с использованием API-интерфейсов TFS

11

Кто-нибудь знает, возможно ли получить список рабочих элементов и ихlinked work items в одной поездке из TFS, используя их веб-сервисы API TFS?

На данный момент нам нужно сделать второй звонок для каждого из рабочих элементов, сделанных во время первого звонка, и мы представляем проблему с производительностью.

Если это невозможно, есть ли способ взглянуть на тип связанного рабочего элемента без их извлечения (например, посмотреть, является ли это задачей или проблемой)?

Ваш Ответ

2   ответа
17

статья в своем ответе вы ссылаетесь на метод, позволяющий делать то, что вы делаете, используяWIQL, Конечно, неплохой выбор.

Другой способ, на мой взгляд, лучше - просто генерировать графически запрос, который дает результаты, которые вы после. Возможно, вам нужны простые & quot; Рабочие элементы и прямая ссылка & quot ;:
enter image description here

После того как вы сохранили, вы сможете:

  1. Open the query in VS & Team Web Access
  2. Tie the query with Excel & work on WIs from within Excel
  3. Catch the query results with TFS-API.

Что касается последней части, предположим, что ваш запрос называется «MyLinkedQuery». и он находится в разделе «Team Queries». из TeamProject & quot; MyProj & quot ;, вы можете сделать что-то вроде этого:

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

namespace LinkedQueryResults
{
    class Program
    {
        static void Main()
        {
            TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFSURL"));

            var workItemStore = (WorkItemStore)teamProjectCollection.GetService(typeof(WorkItemStore));

            var project = workItemStore.Projects["MyProj"];
            QueryHierarchy queryHierarchy = project.QueryHierarchy;
            var queryFolder = queryHierarchy as QueryFolder;
            QueryItem queryItem = queryFolder["Team Queries"];
            queryFolder = queryItem as QueryFolder;

            if (queryFolder != null)
            {
                var myQuery = queryFolder["MyLinkedQuery"] as QueryDefinition;
                if (myQuery != null)
                {
                    var wiCollection = workItemStore.Query(myQuery.QueryText);
                    foreach (WorkItem workItem in wiCollection)
                    {
                        Console.WriteLine(workItem.Title); 
                    }
                }
            }       
        }
    }
}
Error: User Rate Limit Exceeded Prabu
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Prabu
Error: User Rate Limit Exceeded
9

Нашелстатья по этому вопросу.

Он позволяет использовать древовидный запрос, в котором вы можете получить идентификаторы родительских элементов и идентификаторы связанных элементов в одном запросе. Используя это, второй запрос может быть использован для получения фактических подробных объектов рабочего элемента. Два запроса для решения проблемы.

Редактировать: я также написалсообщение об этом в моем блоге.

Похожие вопросы