Asp.net项目数据更新并发控制如何实现
项目情况:
Web 项目,使用了PLinq(本质上跟Linq to sql )差不多。系统架构采用MVP架构。
问题:
由于在数据保存的时候都是根据数据ID去取最新的数据,然后再修改这个数据,最后提交更新。这样就导致了这样的情况发生,如果客户A和客户B都读取 数据 Data,然后在页面上做了修改。客户A先保存数据AData,然后客户B也保存了数据BData。由于客户B保存数据的时候,程序是先去了一下最新数据,所以获取到得数据是客户A保存的AData,因此最后保存的数据是在客户A的数据基础上的修改。这就导致了客户A保存的AData被覆盖。
现在希望,如果有多个人对同一个记录进行修改。那么在第一个人修改成功以后,后面的人提交的时候,系统能够发现记录已经被修改,提示用户他要修改的数据已经被修改了。避免第一个人的记录被其他人覆盖。
尝试过的解决方案:
1. Linq to sql 本身提供了并发冲突的机制,实验了一下,发现不怎么适合在web项目里面使用。
2. 使用时间戳的方法,这样需要在viewstate或Session里面保存每个对象的时间戳。在页面里有多个对象的需要更新时候,这种方案会变得非常复杂。
对应以上说的问题,不知道哪位有比较好的方案和经验。谢谢!