Wann ist SPFile.Properties! = für SPFile.Item.Properties in SharePoint?

8

Einer unserer Kunden hat ein Problem, das wir nicht reproduzieren können. Wir kopieren programmatisch die Eigenschaften eines Dokuments mithilfe von SPFile.Properties in eine Zieldatei. Aus irgendeinem Grund stimmen die Eigenschaften der Datei jedoch nicht mit den Metadaten überein, die in der Liste angegeben sind, in der die Datei gespeichert ist.

Nun können wir das wahrscheinlich lösen, indem wir SPFile.Item.Properties kopieren (noch nicht getestet), aber ich frage mich nur, unter welchen Umständen SPFile.Properties ungleich SPFile.Item.Properties ist.

Update: Wir haben gerade ein Update von unserem Kunden erhalten. Die Verwendung von SPFile.Item.Properties gibt immer die aktuellen Informationen zurück. Wir möchten jedoch immer noch die ursprüngliche Frage verstehen.

    
Jeroen Ritmeijer 07.09.2009, 09:45
quelle

4 Antworten

7

Es gibt einen kleinen Unterschied zwischen SPFile.Properties und SPFile.Item Feldern und der erste ist viel, viel langsamer zu nennen.

Sie haben höchstwahrscheinlich das "Eigenschaften" -Fenster des Microsoft Office-Dokuments gesehen (dieses - Ссылка ). Dies sind die Eigenschaften, die gelesen werden, wenn Sie auf SPFile.Properties zugreifen. Sie zu lesen ist langsam, da es eine Code-Infrastruktur gibt, die die binäre DOC-Datei analysiert und die Eigenschaften findet. (dauert bis zu 30 oder etwas Millisekunden für jede Eigenschaft Zugriff) Weitere Informationen finden Sie hier: Ссылка

In SharePoint ist jedes Element ein SPListItem und seine Feldwerte (und ich verwende hier nicht das Wort "Eigenschaften") werden in der Inhaltsdatenbank von Sharepoint gespeichert. Wenn Sie also auf SPFile.Item.Properties zugreifen, sehen Sie sich tatsächlich den SPListItem an, an den die Datei angehängt ist, und sehen Sie sich deren Eigenschaften in der SharePoint-Inhaltsdatenbank an.

Was passiert hinter der Szene, wenn Sie eine Datei hochladen, in der einige "Office-Eigenschaften" festgelegt sind, dass SharePoint sie in die gleichnamigen Felder in SPListItem kopiert. (Einige Informationen dazu hier: Ссылка )

Dies ist der Grund, warum diese Eigenschaften normalerweise den gleichen Wert haben, ABER es passiert nur, wenn SharePoint weiß, wie man Metadaten aus Ihrer Datei liest und sie zurückschreibt. Wenn Sie also eine .txt -Datei in Ihren SharePoint-Speicher legen, erhalten Sie keine SPFile.Properties zurück.

    
naivists 07.01.2010, 16:02
quelle
1

Der Benutzer wird immer die ListItem-Eigenschaften und nicht die SPFile-Eigenschaften in einer Dokumentbibliothek sehen. Das Verwenden der ListItem-Eigenschaften in der Kopie ist also der Weg zu gehen.

    
KoenVosters 09.09.2009 16:03
quelle
1

Ich glaube, dass dieses Problem mit der Promotion- / Herabstufungseigenschaft der Sharepoint-Eigenschaft zusammenhängt, die das Einbetten von Dokumenteigenschaften in die physische MSOffice-Datei und das Reisen mit dem Client usw. ermöglicht. Dies wird jedoch derzeit nur für Office-Dateitypen unterstützt (to mein Wissen).

Jonathan

    
Jonathan Brauer 15.08.2011 15:49
quelle
0

Der Versuch, das "offiziell dokumentierte" Objekt für Sharepoint zu finden, ist ziemlich unwiderruflich. :-D. Die Online-Dokumente saugen, Sie sind besser von Blog-Einträgen usw. verwenden.

P.S. Ich stimme Alex hier zu. Obwohl ein SPFile niemals in einer Liste ohne ein begleitendes SPListItem vorhanden ist, kann die Verbindung zwischen den beiden beschädigt werden (d. H. Das Listenelement bearbeiten, aber die Datei kann nicht geöffnet werden). Dies bedeutet für mich, Informationen über die 2 ist an verschiedenen Orten in der Inhalt db gespeichert. Ich habe das schon einmal erlebt.

    
Colin 07.09.2009 19:10
quelle

Tags und Links