我理解如何使用实体框架为单个表进行乐观并发。
但是我希望在多个表之间保持乐观并发的情况呢?为了说明我的意思,我将使用一个例子:
如果ser从汽车添加/删除Wheel,我如何管理并发性。
在Car中添加ModifiedTimestamp列可以处理对Car的并发更新,但是对于Car's Wheel的udpates呢?
我只能想象通过使用悲观并发(即 - 将汽车对象锁定到用户)来解决这个问题。但是根据我的研究,实体框架似乎不支持悲观并发。
这只是一个非常简单的例子,我想知道每个人如何解决这种情况。我可以想象,在很多情况下,你有一个实体,它有相关的实体,并且在并发更新方面都应该被视为一个实体。
答案 0 :(得分:1)
支持悲观并发,只需将所有数据访问放在事务范围内。
您可以使用的一个简单策略是最后一个记录胜利的人,所有其他更改都会丢失。这并不总是可以接受的。
答案 1 :(得分:1)
一种方法是始终修改Car表中的某些内容。汽车是你的车轮的根本,因为如果没有汽车,车轮就不会存在。如果你修改轮子你修改整个加重对象 - 汽车。因此,添加一些汽车更新来模拟这种行为 - 通常是维护像ModifiedDate这样的列。
序列化事务支持Pesimistic并发 - TransactionScope
的默认隔离级别。