Быстрый способ циклического перемещения по TFS WorkItems или в любом случае массовой вставки рабочих элементов TFS быстро в SQL - PullRequest
0 голосов
/ 15 января 2019

У меня есть требование выбрать все рабочие элементы из TFS и сохранить каждую деталь в SQL DB. Я могу взять все из TFS без особых проблем. Но не получить идеальный способ для передачи этих данных в SQL Db. Я думал о циклическом прохождении результирующего объекта и выдвижении их по отдельности, но это занимало много времени и ресурсов. Так что с нетерпением ждем идеального чистого решения.

Вот код, который я использую

    public void  GetAllTfsWorkItems()
    {
        //List<string> projects = new List<string>();
        //projects = LoadProjectsList();
        var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(_uri));
        var workitemstore = new WorkItemStore(tpc);
        Query query = new Query(workitemstore, "select * from workitems where  [System.WorkItemType] in ('Epic','Bug','Feature','Product Backlog Item','Task') ");
        WorkItemCollection wic = query.RunQuery();
        List<string> PE = new List<string>();
        List<string> fields = new List<string>();
        foreach(WorkItem wi in wic)
        {
            PE.Add(wi.Title);
            var parentlink = wi.WorkItemLinks.Cast<WorkItemLink>().FirstOrDefault(x => x.LinkTypeEnd.Name == "Parent");
            WorkItem parentworkitem = null;
            int parentid;

            if(parentlink!=null)
            {
                parentid = parentlink.TargetId;
                //parentworkitem = workitemstore.GetWorkItem(parentlink.TargetId);

            }
        }

    }



public class TfsWorkItems
{
    public int ID { get; set; }
    public string WorkItemType { get; set; }
    public string Title { get; set; }
    public string AreaPath { get; set; }
    public string AssignedTo { get; set; }
    public string BoardColumn { get; set; }
    public string State { get; set; }
    public string Description { get; set; }
    public string IterationPath { get; set; }
    public string CreatedDate { get; set; }
    public string Tags { get; set; }
    public string AcceptanceCriteria { get; set; }
    public string BusinessValue { get; set; }
    public string Priority { get; set; }
    public string Effort    { get; set; }
    public string PCode { get; set; }
    public string Parent { get; set; }
    public string Project { get; set; }
    public string TeamName { get; set; }
    public string DomainName { get; set; }
}

Цикл занимает около 10-15 минут, чтобы закончить. Но я ожидаю, что там будет какое-то более простое решение, такое как прямое отображение объекта массива WorkItem в мой пользовательский класс TFSWorkItems и некоторый метод для объединения данных. Пожалуйста, предложите более простое решение. срок истекает плохо, потому что я думаю, что время очень быстро в 2019 году.

Обратите внимание, что в TFS около 250 тыс. + Предметов

...