簡體   English   中英

如何首先在Entity Framework代碼中關閉開放式並發?

[英]How can I turn off optimistic concurrency in Entity Framework code first?

我正在使用Actian Pervasive(v12)數據庫和Entity Framework 6,並嘗試插入新記錄。 當我這樣做時,我收到一個OptimisticConcurrencyException錯誤。 當我使用MS SQL Server數據庫時,即使表的構造相同並且都具有數據庫生成的標識字段,這種行為不會發生。

為了解決此問題,我嘗試將Key字段上的[DatabaseGenerated]屬性更改為所有不同的可用值,以查看它的性能是否更好並且不返回Exception(該Exception是無效的-我是唯一的用戶,並且我正在執行一次插入操作)。 這沒有幫助。

結果,我想在Entity Framework中關閉樂觀並發(即,我想做任何更新來覆蓋數據庫中當前的內容)。 我不希望實體框架引發此OptimisticConcurrencyException 問題是,我不確定如何執行此操作。 我的類定義當前沒有TimeStamp字段或具有[ConcurrencyCheck]屬性的任何字段,但是當我執行簡單的插入操作時,它仍會引發此異常。

注意:我的應用程序是使用DevExpress XAF開發的,DevExpress XAF是ASP.NET和Entity Framework之上的框架,因此檢索數據的調用會自動生成,並且不容易覆蓋這些調用以捕獲和處理此異常,因此我試圖找到一種方法來防止實體框架甚至引發此異常。

如何關閉Entity Framework中的樂觀並發檢查(在我的應用程序中全局關閉)?

我找到了解決方案。

在問題的最初描述中,我沒有提到的是在映射了插入過程的類上出現此錯誤。

EF(OptimisticConcurrency)引發的異常在某種程度上具有誤導性,因為問題實際上是該存儲過程未返回該項目的新ID(Ivan的評論使我考慮了該sproc的返回值)。

要解決此問題,我必須從存儲過程中返回新的ID,如下所示:

SELECT @@IDENTITY AS ID;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM