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字段的併發模式設置爲「固定」,並且這導致其以這種方式被嚴格驗證。 將它改回'無'修復它。