Изменение номеров версий элементов списка SharePoint

Я должен сделать программу, которая изменяет номер версии пользовательского интерфейса элемента списка (номер версии, который отображается в веб-интерфейсе SharePoint).

Например: Существуют следующие версии для элемента: 1.0, 1.1, 1.2, 2.0, 2.2, 2.3. Я хочу изменить метку версии 2.2 на 2.1.

Как я знаю, это невозможно с помощью объектной модели, поэтому я должен изменить базу данных напрямую. В базе данных есть две связанные таблицы:

  • AllDocs - в этой таблице есть строки, которые описывают текущие версии документа.

  • AllDocVersions - в этой таблице есть строки, которые описывают другие (не текущие) версии документа.

Это не так сложно, если мне не нужно менять текущую версию, только я изменяю поле UIversion в нужных таблицах. (В примере: от 2.2 до 2.1). Проблема в том, что изменение версии изменяет текущую версию. В примере: от 2,2 до 2,4. В этом случае я должен переместить запись версии 2.2 из таблицы AllDocVersions в AllDocs, а запись версии 2.3 из AllDocs в AllDocVersions, но структура этих двух таблиц не идентична.

Кто-нибудь может описать, как я могу заполнить пропущенные поля в этих таблицах? Кто-нибудь может предложить какой-либо другой способ изменения версии?

2 ответа

Решение

Одним из не очень простых решений может быть:

  1. Позвольте SharePoint выполнить тяжелую работу, используйте общий API SharePoint для восстановления v2.2 как v2.4, Это делает две вещи для вас:
    • копии v2.2 от AllDocVersions в AllDocs как v2.4 а также
    • движется v2.3 от AllDocs в AllDocVersions,
    • Это возможно через веб-интерфейс, поэтому я полагаю, что оно доступно и для приложения.NET.
  2. удалять v2.2,
  3. Затем вы можете обновить номер версии v2.4 в v2.5, v3.0 и т.д. в базе данных напрямую с помощью оператора (ов) SQL UPDATE, если v2.4 не желаемый номер версии.

Это может привести вас в правильном направлении:

using (SPSite siteCollection = new SPSite("http://sp2010-server"))
{
    SPWeb site = siteCollection.OpenWeb()
    {
        site.UIVersion = 3;
        site.UIVersionConfigurationEnabled = true;
        site.Update();
    }
} 

Источник: Изменение версии пользовательского интерфейса в SP2010

Другие вопросы по тегам