【发布时间】:2015-05-19 09:53:52
【问题描述】:
我们正在尝试构建资源预订系统,用户可以对系统中的位置或人员进行预订。多个用户可以在同一时间对同一资源进行多次预订。
例如, 用户 A、B 和 C 正在尝试在以下时间预订 Location-A。
用户 A
=> 2015 年 3 月 17 日 10:00 至 12:00
=> 17/03/2015 14:00 至 15:00
=> 18/03/2015 10:00 至 12:00
=> 18/03/2015 14:00 至 15:00
用户 B
=> 17/03/2015 11:00 至 12:00
=> 18/03/2015 10:00 至 12:00
用户 C
=> 17/03/2015 11:30 到 13:30
系统需要处理资源冲突,以避免重复预订相同时间或重叠时间。只有一个用户可以获取资源,其余的预订必须失败。我的问题是处理它的正确方法是什么?在将数据插入表之前,我们应该使用事务锁还是表锁?我们正在使用 Visual Studio 2008 和 SQL Server 2008。非常感谢您的建议,我们非常感谢。
【问题讨论】:
-
除非另有编码,否则最后获胜。您可以使用时间戳之类的东西 - 如果您更新记录并且您用于更新的对象的时间戳和正在更新的记录的时间戳不匹配,那么在最后一次读取的时间和当前更新。 LINQ to SQL 能够做类似的事情 - EF 可能也是如此。
-
嗨,蒂姆,感谢您的 cmets。我也是这样想的。服务器端的每个资源都会有“最后更新的日期时间”,并且当他们访问资源时需要保留在客户端站点中。系统需要在进行任何更改之前对其进行比较。我们担心的是,如果用户同时访问资源,他们可能会获得相同的价值。
标签: c# asp.net sql-server visual-studio asp.net-mvc-4