工作项iterationId字段来自哪里?

时间:2014-07-14 14:10:38

标签: tfs tfs2012 tfs-sdk

在tfs数据库Tfs_DefaultCollection

几乎没有钥匙。 (也许没有,因为我没有详尽的搜索)

我能够看到我的所有工作项目,当前/以前的状态就好了。但是,当我加入WorkItemAreTbl_Iteration时,根本没有 IterationIds 匹配。如何按迭代名称/标题查看工作项?

我的搜索代码如下:

    this.Tbl_TeamConfigurationIterations.Dump();
    this.Tbl_Iterations.Dump();
    var myPersonId= foo; // omitted from sample
    var qIteration = from wia in WorkItemsAres.Where(x=>x.AssignedTo==myPersonId && x.State!="Closed" && x.State!="Resolved")
                    join iLeft in Tbl_Iterations on wia.IterationID equals iLeft.SequenceId into iL
                    from iteration in iL.DefaultIfEmpty()
                    select new {iteration.Iteration,wia};
    qIteration.Dump();//.Select(x=>new{x.AreaID,x.IterationID, x.Title,x.WorkItemType}).Dump();

对那些对解决方案感兴趣的人(直接db和tfs api dll调用):

Direct Db version

Proper Tfs dll calls

2 个答案:

答案 0 :(得分:2)

Microsoft非常强烈建议不要直接使用事务数据库(实际上它可能会使您进入不受支持的状态)。如果要查询TFS,建议使用API​​和客户端对象模型(SDK)来执行此操作。有一个非常丰富的API可以与支持的TFS进行交互。

请参阅此处的文档:http://msdn.microsoft.com/en-us/library/bb130146.aspx

这是来自私人邮件列表的内容,我们(ALM MVP)试图更好地理解微软对此的立场:

以编程方式或手动方式从[TFS]数据库中读取可能会导致Microsoft SQL Server中的意外锁定,从而对性能产生负面影响。任何来自Microsoft [TFS]开发团队或Microsoft [TFS]支持未提供的查询,脚本,.dll文件(等等)的[TFS]数据库的任何读取操作都将被视为不受支持被确定为解决微软支持合作的障碍。

如果不支持的读取操作被识别为解决支持参与的障碍,则数据库将被视为处于不受支持的状态。要将数据库返回到支持的状态,必须停止所有不受支持的读取活动。

答案 1 :(得分:2)

@Maslow, 您可以使用xxTree表来获取迭代名称(在WorkItemsAre上加入IterationID = xxTree.Id表)但您应该知道这是未记录且不受支持的方式。我强烈建议使用TFS对象模型来做这些事情。