6 Stimmen

SharePoint 2007: Wie kann ich eine Reihe von Operationen innerhalb einer Transaktion durchführen?

Ich würde gerne wissen, wie ich eine Reihe von Operationen in einem SharePoint-Kontext innerhalb einer Transaktion durchführen kann. Zum Beispiel würde ich gerne etwas wie das Folgende tun können:

context.BeginTransaction();
listItemA.Update();
listItemB.Update();
context.CommitTransaction();

Ich weiß, dass dies mit den OOTB-APIs nicht möglich ist, aber irgendjemand muss doch herausgefunden haben, wie man dies bewerkstelligen kann. Ist es möglich, einen Verweis auf die Datenbankverbindung zu erhalten, um die Transaktion zu bearbeiten? Oder gibt es andere Ideen?

8voto

Rex M Punkte 138455

Obwohl SharePoint technisch gesehen SQL als Speichermedium verwendet, sollten wir es nicht wie eine datenbankbasierte Anwendung behandeln. SP erstellt eine Art Faux-Filesystem, mit dem wir über die API interagieren. Aus der Sicht des Entwicklers ist Sharepoint also so gut wie transaktionslos.

Leider ist das so ziemlich alles, was es zu sagen gibt :) Auch Denken Der Versuch, sich direkt mit der Datenbank zu befassen, wird zu alttestamentarischen Schmerzen führen. Zerreißen von Kleidern, Heulen und Zähneknirschen ;)

6voto

Rutger Hemrika Punkte 61

Verwenden Sie einfach Recycle(). Behalten Sie den Überblick über die GUID in einer GUID[]. Wenn eine fehlschlägt, öffnen Sie den RecycleBin und wiederherstellen/löschen alle nach GUID

GUID[] guids = new GUID[];
SPWeb web;
SPListItem item;
SPList list;

try
{
    foreach item in list

    GUID current = item.Recycle()
    guids.add(current);

    item.Delete();
}
catch{
    if one fails : web.RecycleBin.Restore(guids);
}

if all succeed : web.RecycleBin.Delete(guids):

4voto

Johan Leino Punkte 3445

Wenn Sie mit Versionierung arbeiten, könnten Sie eine Lösung ausprobieren, die Ihr Objekt auscheckt, aktualisiert und eincheckt. Wenn ein Rollback erforderlich ist, machen Sie einfach das Auschecken rückgängig.

Könnte das vielleicht funktionieren?

1voto

Alex Angas Punkte 57602

Eine weitere Möglichkeit ist die Verwendung von Workflow, hier erwähnt . Wie in Wie die Windows SharePoint Services Workflow-Aktivitäten verarbeiten :

W Workflow aus, bis er einen Punkt erreicht an dem er nicht fortfahren kann, weil er auf ein bestimmtes Ereignis wartet: zum Beispiel Beispiel muss ein Benutzer eine Aufgabe als als abgeschlossen bezeichnen. Erst an diesem "Commit Punkt" bestätigen die Windows SharePoint Services die Änderungen, die im vorherigen der vorherigen Windows SharePoint Services-spezifischen Workflow-Aktivitäten vorgenommen wurden. Diese Änderungen werden in einem einzelnen SQL-Transaktion zusammengefasst.

0voto

Anand Punkte 226

Nein, Sharepoint bietet keine SQL-Server-ähnlichen Transaktionsmöglichkeiten.

Wie Rutger Hemrika geschrieben hat, ist das eine viel bessere Methode als alles andere, was ich bisher gesehen habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X