我遇到的情况是我在.NET中使用事务范围。
其中有多个方法调用,第一个执行数据库更新,然后是最后一个读取数据库。
我的问题是数据库会读取更新数据库的第一个方法调用中的更改(注意这些方法中有提交,但在事务范围完成之前它们不会真正提交。)
使用TransactionScope。
{
方法1(在数据库中插入新评论)。
方法2(从数据库中检索所有注释)。
完成。
}
方法2的结果是否包括方法1插入?
让我感到困惑的是我运行了大量的测试,有时更新就在那里,有时它不是!?!
我知道存在隔离级别(在高级别),是否只允许在事务范围内读取未提交的数据?
任何和所有帮助都非常赞赏......
答案 0 :(得分:1)
您可以对所需的数据库(ms-sql)执行任何操作,直到您不进行操作
器transaction.commit()
将出现任何更改。
即使您在一个交易中插入新记录,您也可以在同一个交易中获得其价值。 (如果你不回滚()的话,那就好了。
答案 1 :(得分:0)
是的,这是交易的目的。想想你有2个表的情况,另外一个是外键。在您的事务中,您插入一个,然后使用第一个插入的外键插入另一个,它可以工作。如果数据不可用,那么事务将毫无意义:它将是一次一个操作,这将是原子操作,从而无需交易。