我正在使用TransactionScope
,然后将数据保存在数据库中。
在数据保存后的同一事务中,我正在更改发送到保存的对象的值。
现在我的问题是:它会保存更改的数据吗?转换是如何工作的(在每次调用时保存数据库中的数据,还是在transactionObject.Commit()
调用后保存数据)?
答案 0 :(得分:0)
只有在您拨打transactionObject.Commit()
时才会保存数据。即使您更改了保存的对象,它也不会反映更改,除非您再次保存该对象。
答案 1 :(得分:0)
我认为TransactionScope应该使用Complete
方法提交数据(参见this article)。
请阅读this MSDN article。
它声明:
这只是向交易经理通知您的状态的一种方式。调用此方法后,您无法再通过Current属性访问环境事务,并且尝试这样做会导致抛出异常。
和
如果TransactionScope对象创建了事务,则资源管理器之间的实际提交工作发生在End Using语句中。如果它没有创建事务,只要Committable由CommittableTransaction对象的所有者调用,就会发生提交。
但是,最简单的方法是在特定情况下使用示例代码进行检查;)。