[英]How to implement optimistic concurrency on navigation properties in Entity Framework 6 Database First
[英]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.