是否可以将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的这篇文章,我希望我不必这样做。
答案 0 :(得分:0)
简短回答:是的,这是交易性的。
也不难测试。我在transaction.Complete()之前抛出了一个异常,并且没有从数据库中删除数据。
using (var transaction = new TransactionScope())
{
typedDataSet.DeleteStuff(id);
typedDataSet2.DeleteSomeOtherStuff(id2);
throw new NullReferenceException();
transaction.Complete();
}
奇怪的是,虽然我用SQL SERVER Profiler描述了数据库中发生了什么,并且在服务器上执行了通过类型化数据集引用的存储过程。然而,数据以某种方式回滚。