如何迁移单个User Story及其下属子工作项?查询失败求助
解决单个User Story及其子工作项的迁移查询问题
要迁移指定ID的User Story(74271)及其所有层级下的Bug、Task等子工作项,你之前的WIQL查询存在逻辑问题,正确的写法需要同时包含目标User Story和它的所有子项,以下是两种可行方案:
方案一:直接关联子项查询
使用OR组合目标User Story和它的层级子项查询,明确指定子项的链接类型为反向层级(因为子项的父项是目标User Story):
"WIQLQueryBit": "AND ([System.WorkItemType] = 'User Story' AND [System.Id] = 74271) OR ([System.WorkItemType] IN ('Bug', 'Task') AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse' AND [System.Links.TargetSystem.Id] = 74271)"
如果需要包含所有类型的子工作项,可把IN ('Bug', 'Task')改成NOT [System.WorkItemType] = 'User Story'(根据实际需求调整)。
方案二:用子查询获取所有层级关联项
通过WorkItemLinks子查询一次性获取目标User Story及其所有层级子项的ID,再匹配查询:
"WIQLQueryBit": "AND [System.Id] IN (SELECT Target.[System.Id] FROM WorkItemLinks WHERE Source.[System.Id] = 74271 AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' AND [System.Links.LinkTypeEndName] = 'Child') OR [System.Id] = 74271"
这个写法会自动包含所有直接/间接的子工作项,不需要逐个指定类型。
之前查询失效的原因
- 第一条查询仅筛选了目标User Story本身,完全没关联子工作项,自然只迁移这一个条目。
- 第二条查询的
System.Links.LinkType条件放在主工作项查询中无效,因为主查询是筛选工作项,不是筛选链接关系,必须通过子查询或反向链接条件来关联子项。
额外注意事项
- 确认迁移工具已开启保留工作项层级关系的配置项,否则即使查询到所有子项,迁移后也会丢失父子关联。
- 如果子工作项还有自己的子项(比如Task下的子Task),方案二的写法会自动递归获取所有层级,方案一需要额外扩展条件。
内容的提问来源于stack exchange,提问作者Sijith
相关产品推荐
相关产品推荐

