2017-01-18 2 views
0

Я добавил 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 
    } 
} 

Может кто-то указать, почему он продолжает бросать ошибку.

ответ

1

Убедитесь, что полевая схема (fieldXml переменная в вашем случае) не содержит атрибута Version, иначе SharePoint считает, что поле обновляется.

Например, ошибка возникает при создании поля, используя следующую полевую схему:

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

и не будет с:

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

Возможно, есть рабочий процесс, связанный с этим списком, который запускается и изменяет элемент одновременно с вашим кодом.

Если рабочий процесс отсутствует, тогда этот элемент может быть изменен другим пользователем, как говорится. Дело в том, что элемент не должен быть изменен (другими) в SP с момента его получения до момента его обновления в SharePoint, иначе SP столкнется с ошибкой «конфликтующих изменений».

+0

Он не должен использоваться никем, кроме меня, Это код запускается, когда я устанавливаю свой пользовательский SharePoint, так что иначе я не могу увидеть, как кто-то должен изменить или использовать элемент –

+0

Рабочий процесс может быть инициирован путем обновления или создания элемента в списке. Таким образом, это может быть ваш собственный код, который, например, создает этот элемент на этапе раньше. В любом случае, причина этой ошибки обычно такова: элемент изменен двумя разными абонентами одновременно. – Nikolay

Смежные вопросы