SPFileVersionCollection - почему версии сортируются в смешанном порядке? - PullRequest
9 голосов
/ 26 февраля 2010

Версии 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.File не является нулевым для элементов библиотеки документов.

1 Ответ

6 голосов
/ 26 февраля 2010

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

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

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

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

...