WCF事务中隔离疑问
在WCF的分布事务中, Serializable是默认级别, 我在artech的BLOG(http://www.cnblogs.com/artech/archive/2010/01/30/1660088.html)
中看到Serializable的说明是:
Serializable:可以在事务期间读取可变数据,但是不可以修改,也不可以添加任何新数据;
服务端:
Thread.Sleep( 1000 * 10)
// 修改操作
SQLHelper.ExecuteSqlByTime(Connstring, string.Format("update [WCFItem] set [ItemName] = '{0}' where [ID] = 107", "ChangeServer"), 1000);
客户端:
using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
{
try
{
// 修改操作
SQLHelper.ExecuteSqlByTime(Connstring, string.Format("update [WCFItem] set [ItemName] = '{0}' where [ID] = 107", "ChangeClient"), 1000);
// 引用上面服务的修改操作
obj.Update();
ts.Complete();
}
可是当我在客户端操作时, 同时打开数据库, 查询正在修改的表, 这时一直处于阻塞状态, 要等到事务操作完成才能查询出数据.
给我的感觉是给整张表加锁了. 可 "Serializable:可以在事务期间读取可变数据,但是不可以修改,也不可以添加任何新数据; "
这里明明说的是可以读取可变数据. 为什么读取不了呢.
大家能不能具体的解释一下事务隔离级别在项目中的含义, 感觉有很多地方不明白,最好能通俗易懂.