0

是否可以将 TransactionScope 与类型化数据集一起使用?

如:

using (var transaction = new TransactionScope())
{
    typedDataSet.DeleteStuff(id);

    typedDataSet2.DeleteSomeOtherStuff(id2);

    transaction.Complete();
}

如果抛出错误,与 DeleteStuff(id) 和 DeleteSomeOtherStuff(id) 相关的 sql 查询实际上是事务性的吗?

我已经阅读了 Bogdan Chernyachuk 的这篇关于使用具有强类型数据集的事务的文章,我希望我不必这样做。

4

1 回答 1

0

简短的回答:是的,这是交易性的。

也不是太难测试。我在 transaction.Complete() 之前抛出了一个异常,并且数据没有从数据库中删除。

using (var transaction = new TransactionScope())
{
    typedDataSet.DeleteStuff(id);

    typedDataSet2.DeleteSomeOtherStuff(id2);
    throw new NullReferenceException();
    transaction.Complete();
}

奇怪的是,尽管我使用 SQL SERVER Profiler 分析了数据库中发生的事情,并且通过类型化数据集引用的存储过程在服务器上执行。然而,数据以某种方式回滚。

于 2012-07-06T14:41:49.083 回答