linq to sql transaction
本文关键字:transaction sql to linq | 更新日期: 2023-09-27 17:59:42
下面的代码对存储过程进行了不同的调用。
我的问题是,我希望它在事务中,所以如果其中一个DB方法失败,它将自动回滚挂起的更改。
我读过一些关于Stackoverflow/Microsoft页面的文章,其中指出SubmitChanges将为我将这些内容封装在事务中。
问题是spClearTablesForReplication方法清除了表,后来代码故意失败(用于测试),然后我的所有表都是空的(没有回滚)
XalSqlDataContext db = new XalSqlDataContext();
db.spClearTablesForReplication();
db.spUpdateStockItemGroup(ConvertToXElement(typeof(List<StockItemGroup>), stockItemGroups));
db.spUpdateStockItemSubGroup(ConvertToXElement(typeof(List<StockItemSubGroup>), stockItemSubGroups));
db.SubmitChanges();
对此有任何线索/解决方案。
使用块将代码包装在TransactionScope
中,然后它将回滚,除非它到达调用transactionScope.Complete()
的点。
示例:
using (TransactionScope transactionScope = new TransactionScope())
{
//code here
transactionScope.Complete();
}