.net - 如何查看 SQL 事务上待处理的更改?

标签 .net vb.net t-sql

在处理一些更新数据库的函数时,我编写了一些快速测试,以确保我的函数正确执行。当需要实际更新数据库时,我可以将事务传递给函数,然后提交它:

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/

相关文章:

c# - 在 C# 中使用矩阵标准化变换后的图像

vb.net - 获取 vb.net 目录中所有文件的列表

VB.NET - 在内存中下载 zip 并将文件从内存中提取到磁盘

sql-server - 使用 T-SQL 在 Linux 上获取 sql server 默认备份文件夹

c# - 访问在运行时创建的任何后台 worker

c# - 用于检测网络更改事件的 Windows 服务

c# - LINQ to Object 比较两个整数列表的不同值

t-sql - Power BI 字段参数过滤

sql - 如何返回没有公共(public) ID 的另一个表中尚不存在的行

c# - C#中如何删除数组中的元素