在保存之前如何检查工作项是否被修改
本文关键字:工作 是否 修改 检查 保存 何检查 | 更新日期: 2023-09-27 18:01:24
我在保存工作项时遇到问题。场景是我有一个web应用程序,从那里我发送值到TFS。我可以在这两个地方改变值(通过web应用程序也从TFS)。我现在面临的问题是
当我尝试在TFS中保存一个工作项时,它会检查自从你打开它以来是否有任何更改。如果是这样,你就不能存了。当我从web应用程序中保存时,没有这样的检查,我已经使用了工作项。是一个有效的方法,它仍然没有检查修改的工作项之前,我保存它从web应用程序。
这是我的代码
wi.Open();
foreach (var str in piWorkItemTfs.Values.Keys)
wi[str] = piWorkItemTfs.Values[str];
if (!wi.IsValid())
{
var listFelaktigaVärde = (from Field field in wi.Validate() select field.Name + "=" + field.Value).ToList();
errorMessage = "Felaktiga värde: Id " + wi.Id + " " + String.Join(", ", listFelaktigaVärde);
}
else
{
wi.Save();
errorMessage = wi.Id.ToString();
}
有谁能帮我避免并发问题吗?我需要保存工作项,只有在没有做过更改之前,否则我必须向最终用户显示错误消息。
工作项上的IsValid()
方法只验证工作项上的字段是否正确,它不检查工作项是否在其他地方发生了更改。在工作项对象上有一个称为IsDirty
的标志,它检查工作项自上次保存以来是否发生了更改。
作为旁注,您作为错误消息显示的字段只是不遵守工作项类型定义规则的字段(例如,在其定义的AllowedValues
之外的字段值)。应该检查这一点,但是检查自上次保存以来是否发生了更改时应该显示不同的错误。
以下是WorkItem
类的MSDN链接:http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.workitemtracking.client.workitem(v=vs.110).aspx
编辑
IsDirty
标志将拾取工作项是否在本地被修改。相反,检查服务器端保存的方法是在保存工作项时尝试合并。
workItem.Save(SaveFlags.MergeAll);
IsValid
标志用于本地更改,而不是服务器更改。使用SaveFlags.MergAll
选项保存工作项将执行检查,如果工作项已保存在服务器端,则抛出异常。