0

这里有一个棘手的问题,我用微风,实体框架和日期时间字段。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年6月22日15:21:01.5320000但是保存的日期是在事实上2015年6月22日15 :21:01.533。 相差1毫秒。

我不确定这是为什么?

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

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

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

回答

0

Doh!事实证明,有人已经将实体图中的DOB字段的并发模式设置为“固定”,并且这导致其以这种方式被严格验证。 将它改回'无'修复它。