2016-01-04 5 views
0

Предположим, я обновляю несколько элементов в цикле, а затем вызываю executeQueryAsync() по классу ClientContext, и этот вызов возвращает ошибку (вызывается обратный вызов). Могу ли я быть уверенным, что не обновлен ни один элемент sinle из всех, что я хотел обновить? есть ли шанс, что некоторые из них будут обновлены, а некоторые из них не будут? Другими словами, эта операция является транзакционной? Спасибо, я не могу найти ни одного сообщения об этом. Я спрашиваю о нестандартных решениях CSOM.Является ли context.executeQueryAsync транзакционной операцией?

ответ

1

SharePoint обрабатывает свои внутренние обновления в транзакционном методе, поэтому обновление документа фактически будет состоять из нескольких вызовов в БД, которые, если один из методов завершится с ошибкой, откатываются от других изменений, поэтому при сбое ничего не обновляется наполовину.

Однако это не доступно для нас как внешний разработчик. Если вы создаете обновление, которое обновляет 9 элементов в вашем вызове executeQueryAsync, и оно терпит неудачу на # 7, то первые 6 не будут отменены. Вам нужно будет написать код для обработки сбоев, и если откат будет важен, вам придется вручную отменить изменения в вашем коде.

+0

Большое спасибо за ваш ответ. Можете ли вы также утверждать, что какой-то официальный источник поддерживает ваши претензии? Если есть, потому что я их не нашел, и мне действительно нужна эта информация, которая будет подтверждена. – Martin

+0

Ничего официального. Только то, что я видел сам, и то, о чем прокомментировали опытные разработчики SP. https://social.msdn.microsoft.com/Forums/en-US/30004a3b-11bf-4fce-ba00-6946e8567be0/client-object-model-transactional-update-of-list-and-content-types? forum = sharepointdevelopmentprevious http://stackoverflow.com/questions/4658111/transactional-integrity-sharepoint-list –

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

  • Нет связанных вопросов^_^