C# 如何处理重复数据或避免冲突?
我们正在尝试建立资源预订系统,用户可以在系统中预订位置或人员。多个用户可以在同一时间对同一资源进行多次预订 比如说,, 用户A、B和C正在尝试为以下计时预订位置A 用户AC# 如何处理重复数据或避免冲突?,c#,asp.net,sql-server,visual-studio,asp.net-mvc-4,C#,Asp.net,Sql Server,Visual Studio,Asp.net Mvc 4,我们正在尝试建立资源预订系统,用户可以在系统中预订位置或人员。多个用户可以在同一时间对同一资源进行多次预订 比如说,, 用户A、B和C正在尝试为以下计时预订位置A 用户A =>2015年3月17日10:00至12:00 =>2015年3月17日14:00至15:00 =>2015年3月18日10:00至12:00 =>2015年3月18日14:00至15:00 用户B=>2015年3月17日11:00至12:00 =>2015年3月18日10:00至12:00 用户C=>2015年3月17日11
=>2015年3月17日10:00至12:00
=>2015年3月17日14:00至15:00
=>2015年3月18日10:00至12:00
=>2015年3月18日14:00至15:00 用户B
=>2015年3月17日11:00至12:00
=>2015年3月18日10:00至12:00 用户C
=>2015年3月17日11:30至13:30
系统需要处理资源冲突,以避免同一时间重复预订或时间重叠。只有一个用户可以使用资源,其余的预订必须失败。我的问题是什么是正确的处理方法?在将数据插入表之前,我们应该使用事务锁还是表锁?我们正在使用VisualStudio2008和SQLServer2008。非常感谢您的建议,我们非常感谢 这里至少涉及两个业务流程
- 过程一:
- 过程二:
真正有趣的部分是用户1的列表网格应该显示什么?除非另有编码,否则最后一个在wins中。您可以使用时间戳之类的东西—如果您更新了记录,并且要更新的对象的时间戳与正在更新的记录的时间戳不匹配,那么在上次读取和当前更新之间会发生一些变化。LINQ to SQL能够做类似的事情-EF也可以。嗨,Tim,谢谢你的评论。我也是这样想的。服务器端的每个资源都会有“上次更新的日期时间”,当他们访问资源时,它需要保存在客户端站点中。在进行任何更改之前,系统需要对其进行比较。我们担心的是,如果用户在同一时间访问资源,可能会获得相同的价值。嗨,大比,谢谢你的回答。我们不想为用户保留插槽。这有点像先进先出。第一个预订的人可能会赢得这个位置。这就是为什么多个用户可以同时预订相同的插槽。我们需要在后端执行并发检查。再次感谢你的回答。这给了我们一些想法。(Y)