Изменение номеров версий элементов списка 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 ответа
Одним из не очень простых решений может быть:
- Позвольте SharePoint выполнить тяжелую работу, используйте общий API SharePoint для восстановления
v2.2
какv2.4
, Это делает две вещи для вас:- копии
v2.2
отAllDocVersions
вAllDocs
какv2.4
а также - движется
v2.3
отAllDocs
вAllDocVersions
, - Это возможно через веб-интерфейс, поэтому я полагаю, что оно доступно и для приложения.NET.
- копии
- удалять
v2.2
, - Затем вы можете обновить номер версии
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