【发布时间】:2011-12-13 19:27:07
【问题描述】:
我有一个Games 用户可以加入的列表。要选择game,他们必须在该游戏中选择position(即角色)。
型号
[Game] 1 <-> * [PlayerGame] * <-> 0..1 [Player]
PlayerGame 实体定义玩家选择的位置。
其他详情
- 所有游戏都列在 MVC 3 视图中。
- 数据保存在 SQL Server 2008 实例中,并通过 EF4 (CodeFirst) 访问。
- 视图通过一些 jQuery Get() 调用自行更新,这些调用每 N 毫秒提取最新数据。
- 延迟越高 (N),出现竞速条件的机会就越大,即 2 个用户会尝试选择相同的位置。
- 如果两个用户同时选择相同的位置,我显然需要进行一些服务器端验证,以仅允许 2 个用户中的一个获得所选位置。
评估只有 1 人获得所选职位而其他人收到错误消息的最佳方法是什么?
我目前正在考虑使用时间戳来确保 2 个调用中只有 1 可以成功更新 PlayerGame 行。这是个好主意吗?
【问题讨论】:
标签: asp.net-mvc-3 model-view-controller entity-framework-4 concurrency