SharePoint 2007:如何在事务中执行一系列操作?

SharePoint 2007:如何在事务中执行一系列操作?,sharepoint,transactions,moss,wss,transactionscope,Sharepoint,Transactions,Moss,Wss,Transactionscope,我想知道如何在事务中的SharePoint上下文中执行一系列操作。例如,我希望能够执行以下操作: context.BeginTransaction(); listItemA.Update(); listItemB.Update(); context.CommitTransaction(); 我知道这在OOTB API中是不可能的,但必须有人知道如何实现这一点。是否可以获取数据库连接的引用以处理事务?或者其他想法?尽管SharePoint在技术上使用SQL作为存储支持,但我们不应该将其视为基于数

我想知道如何在事务中的SharePoint上下文中执行一系列操作。例如,我希望能够执行以下操作:

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

我知道这在OOTB API中是不可能的,但必须有人知道如何实现这一点。是否可以获取数据库连接的引用以处理事务?或者其他想法?

尽管SharePoint在技术上使用SQL作为存储支持,但我们不应该将其视为基于数据库的应用程序。SP创建了一个各种各样的人造文件系统,这就是我们通过API与之交互的文件系统。因此,从开发人员的角度来看,Sharepoint几乎没有事务


不幸的是,这几乎就是它的全部:)即使想直接参与数据库也会导致旧约的痛苦。撕破衣服、哀号和咬牙切齿;)

如果使用版本控制,您可以尝试签出项目、执行更新和签入的解决方案。如果需要回滚,只需撤消签出


可能会工作???

另一个选择是使用工作流。如下列文件所述:

Windows SharePoint Services运行 工作流,直到它到达一个点 无法继续,因为它是 等待某些事件发生:等待 例如,用户必须指定一个任务 已完成。只有在这个“承诺”阶段 点“Windows SharePoint 服务提交在中所做的更改 以前的Windows SharePoint 服务特定的工作流活动。 这些更改被批处理为 单个SQL事务

只需使用Recycle()。跟踪GUID[]中的GUID。如果其中一个失败,请打开“反回收”选项卡 和按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):

没有Sharepoint不提供类似SQL server的事务处理功能


正如Rutger Hemrika所发布的,这是一种比我迄今为止看到的任何其他方法都要好得多的方法。

Sharepoint不提供现成的事务支持。这是一个很好的资源,不过我可以省力,将任何关键数据直接存储到RDB中。

Go SharePoint。多年的关系理论和精细调整的实现都被琐碎化了,这是一种误导。它指工作流的序列化(脱水)方面。同样,在SPListItem上调用“Update”也是一个“提交点”。但是,它是一个不支持任何事务的单一操作。