日期:2014-05-20  浏览次数:21059 次

怎样解决多人同时打开单据的锁定问题?
多用户的数据库软件,很多情况下允许多台电脑中的某一台打开一张单据,不允许同时两台电脑打开一张单据,我的方式是每张单据增加状态,忙或者不忙,忙的时候允许打开,打开之后变成忙,关闭窗口时候变成不忙。

但是这种设计在复杂的操作下面会很麻烦,比如用户不正常的关闭窗口,或者自己写的其他功能和这个冲突,可能会造成状态变化不正确,然后还得做个给管理员用的手工修改状态的功能,用户不明白的话软件维护也很麻烦。

有没有更好的方式来解决这种问题,或者使用.net系统自带的一些策略?

------解决方案--------------------
可以用制单人(或者所有者)来控制权限,大概的思路如下:
1.并发:同一个人在多点登录的可能性不大,如果认证服务器不允许重入(就是同一个账号在不同的计算机登录),那么并发可能就极小了;
2.管理员可以为某个单据添加或删除所有者,来调整权限;
3.也可以设置一个超级制单人,拥有所有单据的权限;
4.这样可以为所有的单据业务设计统一的管理模式,一次设计,重复利用

------解决方案--------------------
我觉得这是个人的思维问题

不肯能允许一个账号多地登录

也不可能 单挑数据的锁这么长时间的
------解决方案--------------------
离线并发锁,然后冲突检测。这只是我的一个想法,楼主讨论好了的想法,可以发帖子,大家一起看看。讨论下
------解决方案--------------------
利用存储过程。在保存时候。判断是否已经做了更改。
如果你利用ado.net 的dataset把数据自动更新至数据库的话是没有这个问题的.
ado.net会比对每个字段值。如果不一样是更新不成功的。
如果你使用三层框架bll,dal,model会麻烦些。