在处理一些更新数据库的函数时,我编写了一些快速测试,以确保我的函数正确执行。当需要实际更新数据库时,我可以将事务传递给函数,然后提交它:
user.Assignment("assignment value for some column in table", connection, transaction)
transaction.Commit()
我很好奇是否有一种方法可以编写一个快速测试来验证事务在提交之前是否确实会更新某些行?
(伪代码)
user.Assignment("assignment value for some column in table", connection, transaction)
If Not transaction["SomeColumn"] = "Expected value for SomeColumn"
assert("ColumnName was not going to be updated to the expected value!")
transaction.Rollback()
最佳答案
只要您处于连接内,您就可以像平常一样查询数据; 其他调用者将被阻止,但您将拥有对修改数据的完全访问权限。
如果您使用 TransactionScope
,这意味着您可以使用任何命令/连接(到同一数据库),只要该连接是在 TransactionScope
内创建的 -它将自动加入事务(尽管使用相同连接实例效率更高 - 避免跳转到 DTC 的任何风险)。
如果您使用DbTransaction
,则必须使用相同的连接实例,并记住在针对该连接执行的任何命令上适当设置.Transaction
。
关于.net - 如何查看 SQL 事务上待处理的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608400/