Breeze乐观并发异常保存日期时间

时间:2015-06-22 05:48:56

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

这里有一个棘手的问题,我有微风,实体框架和日期时间字段。

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

因此实体框架认为其他东西已经编辑了db,因为它的原始值不再等于db中的值(因为微秒值是在现场组成的)。 生成以下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);               返回;           };

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

1 个答案:

答案 0 :(得分:0)

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