如何查询TFS数据库在特定日期更改的工作项字段

时间:2012-02-17 12:51:44

标签: tfs

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

上更改的工作项

来自评论的编辑:

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

1 个答案:

答案 0 :(得分:5)

我认为使用普通的查询或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();
    }
}