我要实现开放式并发,比如说有一张单据,甲先打开修改,此时乙也打开修改,问题是:1.在乙一开始修改时系统就提示该单据正在被其他用户修改中,
2.在甲或乙保存时判断数据库的数据与否与修改前是否一致,若一致则保存,否则提醒不能保存.这两种方法哪种更好些呢?还是采用保守并发?(但保守并发就要用到锁,又要防止死锁,呵呵,本人不太熟)如果是第1种,我就想增加一个字段作为判断依据,当甲修改该单据时将该字段标记为"修改中",保存之后就释放,当其他用户欲修改单据时就先判断该字段.
不知各位还没有更好的办法解决呢,谢谢!

解决方案 »

  1.   

    MSDN 里面:介绍 ADO.NET 中的数据并发 
      

  2.   

    可能是我描述不清晰,我这是指两种处理方法,我就是想限制某张单据只能有一个人在修改.第1种方法是在点击修改按钮时先检查该单据是否已标记为"修改中",是则如jsnt_rd说的"只读",这个要在表里增加一个字段,而且我担心甲如果非正常关闭程序,那就会造成该单据一直都标记为"修改中",应该加个时间限制,超时就自动改成"可修改";第2种是在获取单据时另外保存好其的初始值,当保存时再将该值跟数据库对比,一致才能保存,否则也如jsnt_rd说的改了也是白改.这个好像不太人性,而且操作起来好像也有点麻烦.
      

  3.   

    我们项目一般是这样处理的,在修改时不做任何控制,都可以修改
    但是在保存的时候,表中有一个Ts字段,用于保存上次操作的时间,
    比如两个从数据库中读出这张单子Ts0:00,甲先保存时间变成0:10,更新数据库中的Ts,
    此时乙发现读出的Ts和数据库中的Ts不同,则提示数据脏,重新加载单据。