Ich habe ein Szenario, in dem ich alle meine Daten in einer SharePoint 2010-Liste (name = "VersionTestList") in eine SQL Server-Datenbank verschieben muss. Da die Versionsverwaltung in der Liste aktiviert ist, möchte ich auch die vorherigen Versionsdetails verschieben. Wie auch immer, ich konnte den letzten Artikel verschieben, aber leider kann ich die Daten der vorherigen Version nicht abrufen. Ich habe versucht, dies mit Client-Objekt-Modell und in der Lage, die Versionen zu bekommen, aber nicht in der Lage, das ListItem der entsprechenden Version zu erhalten. Bitte finden Sie unten den Code, den ich bis jetzt versucht habe, und helfen Sie mir bei der Lösung dieses Problems.Programmgesteuertes Abrufen von ListItemVersion mithilfe des Clientobjektmodells SharePoint 2010
Auch ich nehme die Version des ListItem wie folgt aus:
string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
File file = web.GetFileByServerRelativeUrl(path);
clientContext.Load(file, item=>item.ListItemAllFields);
FileVersionCollection versions = file.Versions;
clientContext.Load(versions);
oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
clientContext.ExecuteQuery();
Mein ganzer Code ist wie folgt:
class Program
{
static void Main(string[] args)
{
GetVersionsUsingCOM();
}
public static void GetVersionsUsingCOM()
{
File file;
FileVersionCollection versions;
IEnumerable<Microsoft.SharePoint.Client.FileVersion> oldVersions;
ClientContext clientContext = new ClientContex("http://server:1200/test/Poc");
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
file = web.GetFileByServerRelativeUrl(path);
clientContext.Load(file, item=>item.ListItemAllFields);
//clientContext.ExecuteQuery();
versions = file.Versions;
clientContext.Load(versions);
oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
clientContext.ExecuteQuery();
if (oldVersions != null)
{
foreach (Microsoft.SharePoint.Client.FileVersion _version in oldVersions)
{
int count=0;
Console.WriteLine(_version.CheckInComment);
Console.WriteLine("Version : {0}", _version.VersionLabel);
//// Working fine till here but unable to get the version details from version.Url
string versionItemUrl = web.ServerRelativeUrl +"/" + _version.Url;
File oldFile = web.GetFileByServerRelativeUrl(versionItemUrl);
clientContext.Load(oldFile, f=>f.ListItemAllFields);
clientContext.ExecuteQuery();
Console.WriteLine(oldFile.ListItemAllFields["Name"]);
count++;
}
oldVersions = null;
}
Console.ReadLine();
}
}
Server-Objektmodell-Klassen bieten nicht bekommen können zu viel Hilfe beim Versuch, das Clientobjektmodell zu verwenden. –