У меня есть требование выбрать все рабочие элементы из 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 тыс. + Предметов