2010-02-26 6 views
9

Las versiones SPFileVersionCollection y SPListItemVersionCollection me parecen inconsistentes. La inconsistencia no sería un problema para mí, pero el orden de clasificación sí lo es.SPFileVersionCollection: ¿por qué las versiones se ordenan en orden mixto?

SPListItemVersionCollection

puedo entender versiones de ListItems ya que se almacenan en orden descendente:

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

Sin embargo no puedo entender cómo los números de versión se guardan para una biblioteca de documentos artículo:

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)) 

No están en orden ascendente, ni descendente, sino algo mezclado.

¿Hay alguna razón para que el equipo de SharePoint decida almacenar versiones de SPFile como esa? ¿Y esperan que escriba mi propio método para obtener la última versión o hay una versión integrada para eso?

Una nota: Permítame señalar que SPListItem.File no es nulo para los elementos de la biblioteca de documentos.

Respuesta

6

pensaba que iba a producir alguna información sobre SPFileVersionCollection en aplicación de consola y resulta que:

  • último índice se mantenga el actual (no redacción actual, pero publicado) versión (SPFileVersion.IsCurrentVersion propiedad es true para esto)
  • 0 índice ejerce en la versión más antigua
  • (último índice - 1) tiene la última versión redactado (por ejemplo 2,7) y (último índice - 2) se cumple 2,6 etc.
  • SPFile.Versions.Count = 0 si acaba de subir un documento nuevo (versión secundaria, antes de publicarlo).
  • Si continúa cargando nuevas versiones de documentos y aún no las ha publicado, entonces se agregan a SPFileVersionCollection; sin embargo, ninguna tiene la propiedad IsCurrentVersion establecida en verdadero hasta que publique una.

Ahh, tuve una falsa suposición de que una última versión del documento debería contar como la última. ¡Por supuesto, la última versión PUBLICADA es la última!

Aún así, tenga cuidado con las inconsistencias.

+0

tus dos últimos puntos me parecen contradictorios: si 'Count' es 0 hasta que se publique uno, ¿cómo pueden agregarse a' SPFileVersionCollection'? – Nacht

+0

@Nacht gracias por el comentario. Mucho tiempo desde que esto se ha probado, demasiado vago para ir a SharePoint para estar seguro, pero [esta respuesta] (http://social.msdn.microsoft.com/Forums/sharepoint/en-US/24486a73-bfe0-4ed9- bf6f-32b416cbaf16/what-is-the-relation-between-spfileversions-and-splistitemversions) podría arrojar algo de luz: "' SPListItem.Versions.Count' siempre es 1 más que 'SPFile.Versions.Count'. La razón es' SPFile' considera la última versión como la versión actual y, por lo tanto, no incluye esto en su colección de versiones " –

Cuestiones relacionadas