【问题标题】:the object has been updated by another user since it was last fetched自上次获取对象以来,该对象已被另一个用户更新
【发布时间】:2017-06-02 20:08:28
【问题描述】:

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

谁能指出为什么它总是抛出错误。

【问题讨论】:

    标签: c# sharepoint sharepoint-2016


    【解决方案1】:

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

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

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

    并且不会:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 它不应该被除我之外的任何人使用,这个代码在我安装我的自定义 SharePoint 时运行,所以我看不到任何人应该如何修改或使用该项目
      • 可以通过更新或创建列表中的项目来触发工作流。因此,例如,可能是您自己的代码在前一步创建此项目。无论如何,这个错误的原因通常是 - 该项目同时被两个不同的调用者修改。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2022-01-24
      • 1970-01-01
      • 2018-10-28
      • 2014-09-06
      • 2019-09-02
      • 1970-01-01
      相关资源
      最近更新 更多