具有多个表/实体的实体框架并发

时间:2011-02-16 10:39:29

标签: .net entity-framework

我理解如何使用实体框架为单个表进行乐观并发。

但是我希望在多个表之间保持乐观并发的情况呢?为了说明我的意思,我将使用一个例子:

  • 车载表
  • 轮桌,车钥匙(每车多轮)

如果ser从汽车添加/删除Wheel,我如何管理并发性。

在Car中添加ModifiedTimestamp列可以处理对Car的并发更新,但是对于Car's Wheel的udpates呢?

我只能想象通过使用悲观并发(即 - 将汽车对象锁定到用户)来解决这个问题。但是根据我的研究,实体框架似乎不支持悲观并发。

这只是一个非常简单的例子,我想知道每个人如何解决这种情况。我可以想象,在很多情况下,你有一个实体,它有相关的实体,并且在并发更新方面都应该被视为一个实体。

2 个答案:

答案 0 :(得分:1)

支持悲观并发,只需将所有数据访问放在事务范围内。

您可以使用的一个简单策略是最后一个记录胜利的人,所有其他更改都会丢失。这并不总是可以接受的。

答案 1 :(得分:1)

一种方法是始终修改Car表中的某些内容。汽车是你的车轮的根本,因为如果没有汽车,车轮就不会存在。如果你修改轮子你修改整个加重对象 - 汽车。因此,添加一些汽车更新来模拟这种行为 - 通常是维护像ModifiedDate这样的列。

序列化事务支持Pesimistic并发 - TransactionScope的默认隔离级别。