问题标签 [optimistic-concurrency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
456 浏览

entity-framework - 了解实体框架乐观并发(数据库获胜)模式

请参阅使用 Reload(数据库获胜)解决乐观并发异常

为什么在SaveChanges()之后调用该方法Reload()?此调用永远不会更改数据库中的数据。

0 投票
0 回答
378 浏览

optimistic-concurrency - 基于多版本时间戳的并发控制

在基于时间戳的并发控制中,如果某些带有 T_j 且 j > i 已经读过它的事务,为什么你必须拒绝在元素 x_k 上的事务 T_i 中写入。

如文件所述。

在此处输入图像描述

如果 T_j 根本不打算进行任何更新,为什么有必要对 T_i 的行为如此严格?

0 投票
1 回答
205 浏览

optimistic-concurrency - Lightswitch 2011 并发控制

我有两个问题。

  1. Lightswitch 2011是否也支持悲观并发控制?如果是这样,怎么做?
  2. 乐观控制是否支持来自外部数据源的表上的 ROWVERSION 列或仅使用行状态(使用原始值)?

感谢您的回复。

0 投票
1 回答
1957 浏览

c# - 意外的乐观并发异常

我尝试更新我的对象的一个​​字段,并立即将其保存到数据库中。

当我在具有 2 个或更多实例的 Azure 模拟器中运行它时,我会在这里得到很多 OptimisticConcurrencyExceptions。

我正在尝试刷新对象,更新其中一个字段,然后将这些更改推送到数据库。但是,乐观并发阻止了我。

注意:乐观并发是在我从未接触过的 TimeStamp 字段上设置的。

为什么会这样,我该如何解决?

0 投票
1 回答
1916 浏览

entity-framework - EntityFramework:关于 OptimisticConcurrencyException

我有两个相关的表:dbo.resourcesdbo.reservation; dbo.resources有一个指向选项的外dbo.reservationON DELETE SET NULL。我还有一个“之后”触发器dbo.resources,当资源被删除时,它会删除保留。

OptimisticConcurrencyException当我尝试手动删除预订和资源时,我已经“设法”提出了一个问题,这看起来很正常。

然后我找到了问题并消除了它,但现在我想通过捕获OptimisticConcurrencyException并刷新上下文来强制执行更强大的异常处理机制。

我的问题是:谁能向我解释为什么这段代码:

不工作,

而这个:

做?EF 如何处理每种情况下的对象上下文(StoreWins 和 ClientWins)?“幕后”究竟发生了什么?

0 投票
3 回答
1305 浏览

c# - Web应用场景中NHibernate乐观并发的问题

我正在使用 Version 字段来控制 ASP.NET MVC 4 应用程序中的并发性。

映射:

实体:

我正在使用以下方法:

  • 按 Id 读取实体并映射到我的 UserDto 实体(Dto 用于数据传输对象模式),还包括 Version 字段
  • 显示用于编辑 UserDto 实体的表单
  • 接收 POSTed UserDto 实体

然后我执行以下操作:

问题是,即使 userDto.Version 与 originalEntity.Version 不匹配,NHibernate 也会忽略我的 userDto.Version 并使用 originalEntity.Version(显然,来自一级缓存,因为刚刚读取了实体)。这种行为使我的版本字段完全无用。

如何强制 NHibernate 使用我提供的版本值而不是缓存的值?

此外,以某种方式使版本控制对使用我的存储库的其他程序员更加透明会很棒,但目前我不知道如何让它自动从接收到的实体中获取版本并强制 NHibernate 在没有程序员的情况下使用它甚至注意到它。

有任何想法吗?

0 投票
1 回答
643 浏览

stored-procedures - Entity Framework Optimistic Concurrency with Update 存储过程(Julie Lerman 示例)

我在使用更新存储过程理解并发问题时遇到了一些困难。我正在关注 Julie Lerman 的 Programming Entity Framework,她在示例中给出了以下代码:

更新 SP 看起来像:

并且在映射中勾选了“使用原始值”复选框,如下所示: https ://dl.dropboxusercontent.com/u/135754/updatemapping.png

现在,当我尝试:

  1. 按原样运行代码,然后在调试器中检查的 newRowVersion 与 origRowversion 相同,但应用程序进入 'else' 子句(为什么它首先相同,我刚刚更改它?是调试器问题吗?)

  2. 运行代码,但在 BREAKPOINT #1 我更新 Management Studio 中的支付对象时,SaveChanges 抛出 OptimisticConcurrencyException。我认为这是预期的结果。

每次我查看 SQL Profiler 时,都会将原始版本的时间戳发送到服务器。

然后,当我在时间戳值的 SP 映射中取消选中“使用原始值”时,一切都以与上述相同的方式工作......我不明白这一点。我测试错了吗?应用程序什么时候应该输入“if”子句?

提前感谢,干杯!

编辑:我添加了 newTimeStamp 作为更新 SP 映射的返回值。现在我可以看到 RowVersion 的更新值是从数据库中正确获取的。但我仍然看不出选中和未选中“使用原始值”之间的区别......

0 投票
1 回答
89 浏览

java - 覆盖数据库的值,独立于

上下文:Ebean、play-Framework、模型、Optemistic Locking

是否可以为模型的值设置注释,它告诉 ebean 它不应该为此值抛出“光学锁定异常”,因为它独立于先前的数据?

用法示例:我有一个 lastAction 值,它经常更新。此值是否绝对正确无关紧要,因为它仅用于确定自动注销时间或删除时间(注册用户和访客用户)。

0 投票
1 回答
547 浏览

.net - 使用 Microsoft.WindowsAzure.StorageClient.TableServicesContext 并检测并发更新冲突

问题是 System.Data.Services.Client.dll 和 Microsoft.Data.Services.Client.dll 中都存在一些类(DataServiceClientException / DataServiceRequestException / DataServiceResponse)。简单的方法是只使用其中一个库。很遗憾:

  • System.Data.Services.Client.dll 无法删除,因为它是使用 Microsoft.WindowsAzure.StorageClient.TableServicesContext 所必需的
  • Azure 上的 Microsoft.WindowsAzure.StorageClient.TableServicesContext 需要 Microsoft.Data.Services.Client.dll。

通常这两个库一起工作得很好。但是,从此处实现代码以检测并发冲突会导致错误:

因为System.Data.Services.Client.DataServiceClientExceptionDataServiceRequestExceptionDataServiceResponse类无法访问,因为它们存在于两个库中。在使用 Microsoft.WindowsAzure.StorageClient.TableServicesContext 时如何检测并发更新冲突?

0 投票
1 回答
1468 浏览

asp.net-mvc - 为什么当 RowVersion 发生变化时,Entity Framework 会进行更新?

我在尝试使用 Entity Framework 5 捕获 DbUpdateConcurrencyException 时遇到问题。我遇到的问题是 EF 正在更新记录,即使 RowVersion (Timestamp) 属性在从数据库中检索到该行后发生了变化。HttpGet Edit 操作从数据库中获取用户配置文件,然后我将值传递给 ViewModel,包括供用户选择角色并将其传递给视图的复选框列表。

然后,我有一个基本的编辑视图,其中包含 RowVersion 属性的 HiddenFor。

然后我有一个 HttpPost Edit 操作,它从 viewModel 中获取数据并将其添加到我从数据库中检索到的用户配置文件中。然后我将此配置文件的属性更改为从客户端检索到的属性,包括 RowVersion(将 RowVersion 更改回其原始状态)

我通过两次打开编辑页面来测试这一点。然后我更新第二页并单击保存,这会将更改提交到数据库。数据库显示行版本实际上已更改以反映更新。当我更改第二页并单击保存时,即使此配置文件的行版本与保存第一个配置文件时创建的行版本不同,更改也会保存到数据库中。我确实检查过,数据库中的行版本实际上更改了两次。

我有一种有趣的感觉,我在这里错过了明显的东西,但任何帮助将不胜感激。