And*_*ena 2 .net sql-server ado.net transactions
我正在研究.NET Framework 4中的数据访问以获得Microsoft认证,我一直在做很多测试.
这一次,我想了解的目的,IsolationLevel
在SqlTransaction
类.据我了解,这个选项允许我决定一个事务中的易失性数据是否可以被另一个事务访问.也就是说,例如:我在事务1中创建了一个数据行,在提交之前,我可以读取事务2中的数据.
事实是我无法从彼此中读取易失性数据.
那么.. IsolationLevel有什么用?
PS:我不是在谈论分布式事务,只是简单的SqlTransaction.
在2个线程上需要2个连接,2个事务.
线程1:
using (SqlConnection conn = GetSqlConnection())
{
using (SqlTransaction trn = conn.BeginTransaction())
{
-- insert row into table here, then wait
}
}
Run Code Online (Sandbox Code Playgroud)
线程2:
using (SqlConnection conn = GetSqlConnection())
{
using (SqlTransaction trn = conn.BeginTransaction(IsolationLevel.<desiredlevel>))
{
-- wait for thread 1 to insert then read row inserted by thread 1
}
}
Run Code Online (Sandbox Code Playgroud)
在ReadUncommited
第二个线程下将读取该行.在Snapshot
(如果在数据库中启用了快照)它将不会看到它,但它不会阻止.在所有其他隔离级别下,它将阻塞,直到线程1提交或回滚.
归档时间: |
|
查看次数: |
4840 次 |
最近记录: |