SharePoint不对List数据操作提供事务(回滚和提交)支持。实现事务行为的解决方法是什么?
用例1: 在列表中添加项目时,我想更新另一个列表项目。但是如果更新失败,我想回滚添加到第一个列表中的项目。
用例2: 以编程方式更新10个列表项。如果第10次更新失败,我想回滚之前的9次更新。
虽然SharePoint List不是关系数据库,也不应该作为关系数据库,但开发人员越来越多地使用它来存储业务关键数据(需要数据完整性),并且不建议使用外部列表,因为它对外部列表提出了很多限制。正常列表中提供的功能。
答案 0 :(得分:3)
由于SPLists不提供事务的固有支持,您必须自己处理回滚操作。
在用例1和2中,模拟事务的最简单方法是在执行更新之前读取您正在更改的任何列表项的状态,然后在检测到故障时写回该状态。这不是一个完美的解决方案,因为足够严重的错误也可能会阻止您的回滚更新。这是您没有数据存储支持交易所支付的价格。
话虽如此,虽然很多客户都会要求将业务关键数据存储在SPLists中,但我认为你的工作是说服他们这不是一个好主意,并且通过webservices访问的事务数据库是更安全的SP兼容存储重要数据的方式。
答案 1 :(得分:0)
如果您使用支持版本控制的列表,我发现它更简单一些。 我使用中间类来访问列表项。当我在该类上调用.Update()时,我存储了我正在更新的任何项目的当前版本ID。如果以后在“交易”中出现任何问题,我只需恢复到该版本ID。