【问题标题】:Breeze optimistic concurrency exception saving datetimeBreeze 乐观并发异常保存日期时间
【发布时间】:2015-09-07 11:38:48
【问题描述】:

这是我在微风、实体框架和日期时间字段方面遇到的一个棘手问题。

由于日期字段在进入和离开微风系统时添加了当前微秒,因此在保存实体时出现乐观并发异常。

因此实体框架认为其他东西已经编辑了数据库,因为它的原始值不再等于数据库中的值(因为微秒值是当场组成的)。 生成如下 SQL:

exec sp_executesql N'UPDATE [dbo].[Profiles] SET [DOB] = @0, [TotalTime] = @1, [Modified] = @2 WHERE (([Id] = @3) AND ([DOB] = @4)) ',N'@0 datetime2(7),@1 float,@2 datetime2(7),@3 uniqueidentifier,@4 datetime2(7)',@0='2015-06-22 15:21:43.4180000',@1=3210,@2='2015-06-22 15:22:52.7520000',@3='F944965E-9E18-E511-BF26-4CEB4272XXXX',@4='2015-06-22 15:21:01.5320000'

EF 正在寻找日期 2015-06-22 15:21:01.5320000,但存储的日期实际上是 2015-06-22 15:21:01.533。 相差 1 毫秒。

我不确定这是为什么?

我目前尝试实现的修复是将此函数添加到我的应用程序的 main.js 中。

breeze.DataType.parseDateFromServer = function (source) { var dt = moment(source).toDate(); dt.setMilliseconds(0); 返回 dt; };

这似乎让我摆脱了这种束缚。

【问题讨论】:

    标签: datetime knockout.js entity-framework-5 breeze durandal-2.0


    【解决方案1】:

    哇!事实证明,有人将实体图中 DOB 字段的 ConcurrencyMode 设置为“Fixed”,这导致它以这种方式被大量验证。 将其更改回“无”修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多