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



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

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

因此,实体框架认为其他东西已经编辑了数据库,因为它的原始值不再等于数据库中的值(因为微秒值是当场弥补的)。生成如下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.532000,但存储的日期实际上是2015-06-22 14:21:01.533。相差1毫秒。

我不知道为什么会这样?

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

bread.DataType.parseDateFromServer=函数(源){var dt=力矩(源).toDate();dt设置毫秒(0);返回dt;};

这似乎让我摆脱了困境。

Doh!事实证明,有人将实体图中DOB字段的ConcurrencyMode设置为"Fixed",这导致它以这种方式进行了大量验证。将其改回"无"修复了它。

最新更新