该对象自上次获取后已被另一个用户更新

the object has been updated by another user since it was last fetched

我添加了一些字段,所以我的 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
    }
}

谁能指出为什么它一直抛出错误。

可能有一个与该列表关联的工作流,它会被触发并与您的代码同时修改项目。

如果没有工作流程,那么该项目可能会被其他用户修改,就像它所说的那样。关键是,从您获取它到您在 SharePoint 中更新它,不应在 SP 中(由其他人)修改该项目,否则 SP 会出现 "conflicting changes" 错误。

确保字段架构(在您的情况下为 fieldXml 变量)不包含 Version 属性,否则 SharePoint 认为该字段正在更新。

例如,使用以下字段模式创建字段时会发生错误:

<Field Version='1' Type='Geolocation' DisplayName='Location' /> 

并且不会与:

<Field Type='Geolocation' DisplayName='Location' />