【发布时间】: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