0

我使用電燈開關天青體改記錄。出現錯誤時保存使用電燈開關天青

我修改記錄中的一列之後,當我點擊保存按鈕我

「商店更新,插入或刪除語句影響(0)。Entties可能已被修改或刪除的行的一個意外的數因爲實體加載,刷新ObjectStateManager條目。

我用VS 2012年我的開發機器調試這個光切換應用程序。它工作正常,沒有錯誤,當我修改相同的記錄保存列然後保存。

這個論壇有沒有人知道什麼可能導致這種情況?我應該如何解決它?

我懷疑蔚藍的機器沒有EF的同一版本與我的dev的機器。但在Light switch項目中,客戶端和服務器引用都找不到EF。所以我不知道如何將我的機器上的EF dll帶到Azure機器。

任何人都可以給我一些這方面的建議?

感謝

克里斯

回答

0

通常是樂觀併發的副作用。本文可以給你在Lightswitch的想法: LightSwitch 2012 Concurrency Enhancements

當它在開發機器上工作,並且它不在Azure上工作時,我猜測你的生產數據庫中有些東西是不正確的。

你也可以看看Entity framework: affected an unexpected number of rows(0)

+0

當它在開發機器上工作時,它指向生產數據庫。換句話說,在Azure和我的開發機器上,LightSwitch應用程序指向同一個數據庫。它適用於我的開發機器,但在Azure上出現此錯誤。 – user2074005 2013-02-15 17:53:05

+0

,我在生產環境非常肯定(天青)只有一個錯誤發生時,沒有其他用戶的記錄既不通過LightSwitch的UI或以其他方式改變任何東西使用它的用戶(我自己)。因此在該時間段內沒有併發使用數據庫。 – user2074005 2013-02-15 18:28:39

+0

問題只在更新中,或者您對新記錄有同樣的問題?您是否將其部署爲Azure上的網站或者它是桌面應用程序? – Ryan 2013-02-16 11:35:10

0

有代替插入/更新觸發器,有時SQL服務器不報到的每一個新的插入/更新的行的IdentityScope已。因此EF無法實現受影響的行數。 通常情況下,任何插入/更新到具有標識列的表中後立即選擇scope_identity()來填充實體框架中的關聯值。而不是觸發器會導致第二步被錯過,導致0行插入錯誤。

你可以改變你的觸發是插入之前或之後或在它的末尾添加以下行調整你的觸發器:

select [Id] from [dbo].[TableXXX] where @@ROWCOUNT > 0 and [Id] = scope_identity() 

thisthis線程瞭解詳情。

+0

在這種情況下可以解釋什麼原因觸發器在Dev框上工作正常只在雲中有問題? – user2074005 2013-02-20 03:43:47

+0

嘗試從[dbo]添加選擇[Id]。[TableXXX]其中@@ ROWCOUNT> 0和[Id] = scope_identity()仍然有相同的錯誤。 – user2074005 2013-02-21 20:29:42

+0

您可以將觸發器更改爲(插入/更新)觸發器之前還是之後? – Ryan 2013-02-21 23:02:31