【发布时间】:2009-08-03 12:08:20
【问题描述】:
我发现 an MSDN article 描述了 EF 在保存更改时如何处理并发:
默认情况下 [...] 对象服务保存对象 对数据库的更改不 检查并发。为了 可能会遇到的属性 并发度高,我们 建议实体属性为 在概念层中定义为 的一个属性 ConcurrencyMode="固定"
我有两个问题:
-
在我的模型中没有
ConcurrencyMode="fixed"的属性,我可以安全地假设如果在保存更改时抛出OptimisticConcurrencyException,那是因为实体不再存在于数据存储中,即它有被其他用户删除了,还是我遗漏了什么?我想象 EF 执行一个看起来像这样的
UPDATE-statement,在我看来,如果 ID = 1 的人不存在,只会导致抛出OptimisticConcurrencyException:UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1 -
当使用
ConcurrencyMode="fixed"时,EF 在删除实体时是否也会检查并发性?换句话说,EF 是否会执行如下所示的DELETE-statement(不仅仅是WHERE-clause 中的主键):DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
【问题讨论】:
标签: .net entity-framework optimistic-concurrency