我有一个实用程序方法在我的应用程序中创建 TransactionScope。
我想做一个单元测试来验证返回的 TransactionScope 是否具有正确的 IsolationLevel 设置,以确保没有人可以在不破坏测试的情况下修改代码。
System.Transactions.Transaction 范围没有公开此类信息的公共属性。 (http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx)
有什么办法可以得到这些信息吗?
您可以运行 SQL 查询来检查隔离级别:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncomitted'
WHEN 2 THEN 'Readcomitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS IsolationLevel
FROM sys.dm_exec_sessions
where session_id = @@SPID
EDIT
根据下面的评论,还有一种方法可以从代码中获取隔离级别。这可能是这样的:
using (TransactionScope scope = new TransactionScope())
{
using (SqlConnection connection1 = new SqlConnection("Data Source=localhost;Integrated Security=True"))
{
Transaction trans = Transaction.Current;
System.Transactions.IsolationLevel level = trans.IsolationLevel;
}
}
您可以通过调用获取当前交易Transaction.Current
.
Source: 使用事务范围实现隐式事务 http://msdn.microsoft.com/en-us/library/ms172152%28v=vs.85%29.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)