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();

对此有任何线索/解决方案。

linq to sql transaction

使用块将代码包装在TransactionScope中,然后它将回滚,除非它到达调用transactionScope.Complete()的点。

示例:

using (TransactionScope transactionScope = new TransactionScope())
{
    //code here
    transactionScope.Complete();
}