具有类型化数据集的TransactionScope

时间:2012-07-05 15:01:09

标签: c#-4.0 transactions transactionscope strongly-typed-dataset

是否可以将TransactionScope与Typed Dataset一起使用?

如:

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

    typedDataSet2.DeleteSomeOtherStuff(id2);

    transaction.Complete();
}

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

我已经在Using Transactions with Strongly Typed datasets阅读了Bogdan Chernyachuk的这篇文章,我希望我不必这样做。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

奇怪的是,虽然我用SQL SERVER Profiler描述了数据库中发生了什么,并且在服务器上执行了通过类型化数据集引用的存储过程。然而,数据以某种方式回滚。