SPFileVersionCollection - почему версии отсортированы в смешанном порядке?

Управление версиями SPFileVersionCollection и SPListItemVersionCollection кажется непоследовательным мне. Несоответствие не было бы проблемой мне, но порядок сортировки.

SPListItemVersionCollection

Я могу понять управление версиями ListItems, поскольку они хранятся в порядке убывания:

SPContext.Current.ListItem.Versions.Count -> 5
SPContext.Current.ListItem.Versions[0].VersionId -> 1026 (2.2 latest version)
SPContext.Current.ListItem.Versions[1].VersionId -> 1025 (2.1)
SPContext.Current.ListItem.Versions[2].VersionId -> 1024 (2.0)
...                                [4].VersionId ->      (oldest version)

SPFileVersionCollection

Однако я не могу понять, как номера версий сохраняются для объекта библиотеки документа:

SPContext.Current.ListItem.File.Versions.Count -> 4
SPContext.Current.ListItem.File.Versions[0].ID -> 512 (1.0 oldest one) 
SPContext.Current.ListItem.File.Versions[1].ID -> 513 (1.1)
SPContext.Current.ListItem.File.Versions[2].ID -> 1025 (2.1 latest version)
SPContext.Current.ListItem.File.Versions[3].ID -> 1024 (2.0 (EDIT: IsCurrentVersion = True))

Они, ни в порядке возрастания, ни убывание, но что-то смешалось.

Есть ли какая-либо причина для команды SharePoint решить сохранить версии SPFile как этот? И они ожидают, что я пишу свой собственный метод для получения последней версии или есть ли встроенный для этого?

Примечание: Позвольте мне указать на тот SPListItem. Файл не является пустым для объектов библиотеки документа.

9
задан Janis Veinbergs 18 March 2010 в 07:29
поделиться

1 ответ

Подумал, что выведу некоторую информацию о SPFileVersionCollection в консольном приложении, и оказалось, что:

  • последний индекс будет содержать текущую (не составленную, а опубликованную) версию (SPFileVersion.IsCurrentVersion для этого имеет значение ИСТИНА)
  • 0 индекс содержит самую старую версию
  • (последний индекс - 1) имеет последнюю составленную версию (например, 2.7) и (последний индекс - 2) содержит 2.6 и т. Д.
  • SPFile.Versions.Count = 0, если вы только что загрузили новый документ (младшая версия перед публикацией).
  • Если вы продолжаете загружать новые версии документов и еще не опубликовали их, они добавляются в SPFileVersionCollection, однако ни у одного из них для свойства IsCurrentVersion не установлено значение true, пока вы не опубликуете его.

Ах, у меня было ложное предположение, что последняя черновая версия документа должна считаться последней. Конечно, последняя ОПУБЛИКОВАННАЯ версия является самой последней!

Тем не менее, остерегайтесь непоследовательности.

6
ответ дан 4 December 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: