我有Games
个用户可以加入的列表。要选择game
,他们必须在该游戏中选择position
(即角色)。
模型
[Game] 1 <-> * [PlayerGame] * <-> 0..1 [Player]
PlayerGame实体定义玩家选择的位置。
其他详情
只有一个人获得所选位置而另一个人收到错误消息的最佳方法是什么?
我正在考虑使用TimeStamps来确保只有2个调用中的 1 可以成功更新PlayerGame行。这是个好主意吗?
答案 0 :(得分:1)
是使用时间戳。这是通常使用的方式,SQL服务器(任何数据库服务器)和EF都支持它们。您必须将时间戳往返客户端并在构造要更新的实体时使用它(在分离方案中)。
答案 1 :(得分:1)
从你的问题我可以假设你还有[Positions]
表?如果没有,那些来自哪里?
所以你真的不需要时间戳吗?在您坚持实体之前,请执行entity.List().Where(x => x.GameId == requestedGameId && x.PositionId == requestedPositionId)
然后,如果您收到null并且它不存在,则可以安全地提交,如果您确实收到了实体,则该位置已被占用。
注意:我不熟悉实体框架语法,只是猜测它是什么样的,但是当我的意思是我的伪代码时你可能会得到