TransactionScope是对同一事务中的读取可用的数据库更新

时间:2013-12-16 19:10:29

标签: c# .net oracle11g

我遇到的情况是我在.NET中使用事务范围。

其中有多个方法调用,第一个执行数据库更新,然后是最后一个读取数据库。

我的问题是数据库会读取更新数据库的第一个方法调用中的更改(注意这些方法中有提交,但在事务范围完成之前它们不会真正提交。)

使用TransactionScope。

{

方法1(在数据库中插入新评论)。

方法2(从数据库中检索所有注释)。

完成。

}

方法2的结果是否包括方法1插入?

让我感到困惑的是我运行了大量的测试,有时更新就在那里,有时它不是!?!

我知道存在隔离级别(在高级别),是否只允许在事务范围内读取未提交的数据?

任何和所有帮助都非常赞赏......

2 个答案:

答案 0 :(得分:1)

您可以对所需的数据库(ms-sql)执行任何操作,直到您不进行操作

  

器transaction.commit()

将出现任何更改。

即使您在一个交易中插入新记录,您也可以在同一个交易中获得其价值。 (如果你不回滚()的话,那就好了。

答案 1 :(得分:0)

是的,这是交易的目的。想想你有2个表的情况,另外一个是外键。在您的事务中,您插入一个,然后使用第一个插入的外键插入另一个,它可以工作。如果数据不可用,那么事务将毫无意义:它将是一次一个操作,这将是原子操作,从而无需交易。