【问题标题】:How to query TFS Database for work item field changed on specific date如何查询 TFS 数据库以获取在特定日期更改的工作项字段
【发布时间】:2012-02-17 12:51:43
【问题描述】:

我想查询在特定日期编辑过的 TFS 工作项。使用 Changed Date = @Today - 1 ,我可以获得昨天更改的工作项,但如果我今天更改工作项并查询昨天所做的更改,它将被忽略,因为它的 更改日期 是今天。所以我想通过历史搜索查询在某个 x 日更改的工作项

从评论编辑:

我会更清楚。我想检查某个字段(例如 System.AssignedTo 字段)是否在给定日期更改。

【问题讨论】:

    标签: tfs


    【解决方案1】:

    我认为使用普通查询或 WIQL 是不可能的。

    您可以使用 TFS API 获取结果。这是一个查询,可以为您提供所需的结果。您只需要添加一些对某些 TFS 程序集的引用即可。

    void Main()
    {
        const String CollectionAddress = "http://mytfsserver/tfs/MyCollection";
    
        using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(CollectionAddress)))
        {
            var server = tfs.GetService<WorkItemStore>();
            var changes =
                server.Query("select * from WorkItems where [System.ChangedDate] = @Today")
                .Cast<WorkItem>()
                .SelectMany(wi =>
                    wi.Revisions
                    .Cast<Revision>()
                    .SelectMany(r =>
                        r.Fields
                        .Cast<Field>()
                        .Where(f => !String.IsNullOrEmpty(f.OriginalValue as String) && f.Value != f.OriginalValue && f.ReferenceName == "System.AssignedTo")
                        .Select(f => new { wi.Id, f.OriginalValue, f.Value, f.ReferenceName, })))
                .Dump();
        }
    }
    

    【讨论】:

    • 我会更清楚。我想检查某个字段(例如 System.AssignedTo 字段)是否在给定日期更改。
    • @SureshBalaji 我明白你的意思,我会在开始工作时尝试更新我的答案。
    • 非常感谢。几乎没有什么改动,对我来说效果很好。伟大的工作。
    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多