jsom - SharePoint 2007: ¿cómo puedo realizar una serie de operaciones dentro de una transacción?
sharepoint csom assemblies (6)
Aunque SharePoint técnicamente usa SQL como respaldo de almacenamiento, no se supone que lo tratemos como una aplicación basada en una base de datos. SP crea un falso sistema de archivos, que es con lo que interactuamos a través de la API. Entonces, desde la perspectiva del desarrollador, Sharepoint prácticamente no tiene transacciones.
Desafortunadamente eso es todo lo que hay que hacer :) Incluso pensar en tratar de involucrarse directamente con la base de datos resultará en dolor en el Antiguo Testamento. Desgarro de prendas, gemidos y crujir de dientes;)
Me encantaría saber cómo realizar una serie de operaciones en un contexto de SharePoint dentro de una transacción. Por ejemplo, me gustaría poder hacer algo como lo siguiente:
context.BeginTransaction();
listItemA.Update();
listItemB.Update();
context.CommitTransaction();
Sé que esto no es posible con las API OOTB, pero alguien tiene que haber descubierto cómo lograr esto. ¿Es posible obtener una referencia a la conexión de la base de datos para manejar la transacción? ¿O alguna otra idea?
Si utiliza el control de versiones, puede probar una solución que verifique su artículo, realice actualizaciones y realice el check-in. Si se necesita deshacer, simplemente deshaga el pago.
Podría funcionar quizás?
Otra opción es usar el flujo de trabajo, mencionado aquí . Como se indica en Cómo Windows SharePoint Services procesa las actividades de flujo de trabajo :
Windows SharePoint Services ejecuta el flujo de trabajo hasta que llega al punto en que no puede continuar porque está esperando que ocurra algún evento: por ejemplo, un usuario debe designar una tarea como completada. Solo en este "punto de confirmación" Windows SharePoint Services confirma los cambios realizados en las actividades de flujo de trabajo específicas de Windows SharePoint Services anteriores. Esos cambios están agrupados en una sola transacción SQL.
Ningún Sharepoint no proporciona capacidad de transacción de SQL Server.
Como lo publicó Rutger Hemrika, esa es una forma mucho mejor de hacerlo que cualquier otra cosa que haya visto hasta ahora.
Sharepoint no ofrece soporte de transacciones fuera de la caja. Aquí hay un buen recurso para Construir un Sistema. Administrador de recursos de Transacciones para SharePoint Aunque yo ahorraría el esfuerzo y almacenaría cualquier información crítica directamente en un RDB.
Simplemente use Recycle (). Mantenga un registro del GUID en un GUID []. Si uno falla, abra de RecycleBin y restaure / elimine todo por 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):