2015-10-29 35 views
1

我有一個簡單的方法,使用實體框架將一行插入到我們的表中。但是,該表具有一個觸發器,而不是在插入行後立即操作該行。這似乎是通過產生錯誤「存儲更新,插入或刪除影響意外數量的行(0)的語句」來使實體框架。我該如何解決這個問題?插入一個項返回 - 存儲更新,插入或刪除語句影響意外的行數(0)

using (var supportContext = new SupportContext(CustomerId)) 
{ 
    var mobileUser = new AcctMobileUser 
    { 
     amu_user_id = userId 
    }; 
    supportContext.AcctMobileUsers.Add(mobileUser); 
    await supportContext.SaveChangesAsync(); 
} 
+0

'有一個觸發器,只要插入它就操縱行'它對行做了什麼? –

+0

它實際上是一個TON背景的東西。它操縱一個字段(這是一個FK)來確定它是否是一個帳單用戶。但實際上,只是在完成所有工作時才更新其中的一列。 –

+1

看到[這裏](http://stackoverflow.com/questions/1836173/entity-framework-store-update-insert-or-delete-statement-affected-an-unexpec) –

回答

0

您沒有顯示足夠的代碼來確定如何在「標題」中發生錯誤。一切都取決於觸發器是如何編碼的以及它的功能。我建議你獲取該代碼,它可能會提供一個線索,說明爲什麼「標題」已更改。

+2

爲什麼這是一個答案? –

+0

我知道確切的位置,何時以及爲什麼要更改列。問題在於,我無法觸摸觸發器,因爲它存在於1,000多個客戶數據庫中,並且可能會有點混亂。我需要做的就是告訴實體框架插入記錄。也許禁用樂觀併發會有所幫助。 –

0

這是由於EF的樂觀併發模型而發生的。在接收插入的表上的觸發器上有一個「INSTEAD OF INSERT」條件。這導致行不被插入,而是插入行本身。

通過告訴EF簡單地執行一個任意的SQL插入語句,一切都按照它應該處理。此方法的唯一警告是該對象不會返回,因此必須手動獲取插入的記錄。

相關問題