C# 事宜 隔离级别

C# 事务 隔离级别
项目中用到事务,在进行,增删改的时候开启事务,这样导致其他用户操作被修改的表的话就是  超时,该表被事务锁死。
我吧事务的每个隔离级别都试了,同时开启两个项目,一个打断点开启事务操作表之后停下,不进行提交,在另一个程序里查询该表超时。
请问大神我该怎么做?
怪相2点:
1,锁死不是全部,很久以前的单据可以查询,但是我只更改一张单据,与之相邻的很多都会锁死,为何?
2,我在另一个程序里锁死查不出来的数据却可以在数据库里查询到,而且通过数据库也可以查出来该表被锁定,通过Kill ** 杀死 锁  之后另一程序立马可以查询了。
------解决方案--------------------
Read UnCommitted事务可以读取事务已修改,但未提交的的记录。

Read UnCommitted事务会产生脏读(Dirty Read)。

Read UnCommitted事务与select语句加nolock的效果一样,它是所有隔离级别中限制最少的。
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED   设置这个试试,或者select * from table with(nolock)

------解决方案--------------------
感觉应该是这样的,你在系统框架中开启事务,控制隔离级别,但并没有控制数据库是否ReadUncommitted,而数据库它有自己的管理机制,就比如hibernate的dao去映射数据库,你在程序中开启的隔离级别只能控制到dao,而不能控制数据库,而数据库预设值是Committed,所以你的操作如果是sp就加上ReadUncommitted,或者语句加with(nolock),还有你之所以能读到很久以前的数据,那是因为你在更新的时候锁的不是表,如果没有表结构变更或者这表的更新什么的,它是不会锁表的,锁的页或者行。。尝试一下吧。。我也懂的不多,感觉应该是这样的。