db lock和程序里面的lock是两个概念
db lock对应的比如事务,或者你显示声明的行锁,表锁,或者自动更新锁之类的,这个是你的sql或者存储过程来控制的
lock只是控制程序里面的锁,它不会也不可能可以控制到数据库里面的锁或者这样举例子
你家门的锁和银行保险柜的锁,咋一看它们怎么会有关系,但你以下的行为导致它们产生了关系
你打开门(门锁)--〉去银行专柜办理保险箱业务--〉银行受理成功--〉工作人员交付保险柜钥匙--〉打开银行保险柜(保险柜锁)
即这个关系是你的行为造成的,而不是它们本身就存在关系

解决方案 »

  1.   

    被lock住的东西在块内是不应该改变的,否则就达不到应有的效果,会带来潜在的bug
      

  2.   


    我lock了object, 其他的线程就应该执行不了db.ExecuteScalar  啊 
    我开保险柜必须进门开, 现在我把门锁住了  ,为什么还有其他人进去开了 ?我看不出 我的问题和你打的比方之间有什么关系不去更改 lock块内的内容, 还锁它干嘛?
      

  3.   

    lock了object,其它方法是在这个没结束前出不来,但看你这个方法啊,你有事务在啊,你的事务没结束,lock出来了又有什么用?