我添加了somefield以便我的SharePoint解决方案,但我一直收到错误the object has been updated by another user since it was last fetched.
foreach (var field in new PageAndFieldData().Fields)
{
var spField = web.Fields.FirstOrDefault(i => i.InternalName == field.field_name); // if dont exist = create
if (spField == null)
{
var fieldXml = field.Xml;
var newspField = web.Fields.AddFieldAsXml(fieldXml, false, AddFieldOptions.DefaultValue);
if (groups.Contains(field.group_name))
newspField.Group = field.group_name;
else
{
newspField.Group = field.group_name;
}
_Ctx.Load(newspField);
_Ctx.ExecuteQuery(); <--- This line throws the error
}
}
有人可以指出为什么它一直在抛出错误。
答案 0 :(得分:1)
确保字段架构(在您的案例中为fieldXml
变量)不包含Version
属性,否则SharePoint会认为该字段正在更新。
例如,使用以下字段架构创建字段时会发生错误:
<Field Version='1' Type='Geolocation' DisplayName='Location' />
并且不会与:
<Field Type='Geolocation' DisplayName='Location' />
答案 1 :(得分:0)
可能存在与该列表相关联的工作流程,该工作流程会被触发并与您的代码同时修改该项目。
如果没有工作流程,那么该项目可能会被其他用户修改,就像它说的那样。关键是,从您获取项目到在SharePoint中更新它时,SP中的项目不应该被SP修改(由他人),否则SP会出现“冲突的更改”错误。