5

這裏有點沮喪。我試圖找到一種方法來支持更新與實體框架級聯,並且似乎沒有內置的方式。對網絡的研究基本上表明,你永遠不應該改變一個主鍵值,但是有一些你需要的有效情況(例如UPC值作爲主鍵,UPC條碼現在變得更大,這意味着更新現有的和保持適當的外鍵關係)。實體框架和UPDATE CASCADE

一種方法顯然是利用SavingChanges事件,查看主鍵字段是否正在更改,如果是這樣,則遍歷導航屬性並以這種方式更新子表。

這在理論上是可行的。但這聽起來很麻煩。任何人有更好的主意?不能相信比爾會把這些東西從框架中排除出去,只是因爲大多數人不這樣做。 SQL Server仍然支持它...

Thx!

+0

誰是比爾? – 2010-11-10 03:29:11

+0

開始MS的條例草案... – 2010-11-10 04:02:33

+0

請參閱MSDN:http://msdn.microsoft.com/en-us/library/bb738695.aspx – RPM1984 2010-11-10 09:28:11

回答

2

您不能直接通過EF更改主鍵。問題在於EF在主鍵= x處進行更改。所以你不能改變x。

您可以從EF執行更新主鍵的存儲過程。

在你的情況下,我會有一個主鍵是一個自動增量編號,然後一個條形碼作爲一個獨特的索引不同的領域。

+0

Thx。條形碼是一個例子,我可以想到很多場景(在現有的系統中),條形碼已經成爲主鍵。在EF進入城市之前,這非常有意義。我認爲現在唯一的辦法就是外鍵自行處理級聯,即使這意味着我必須在保存後刷新實體,以確保我在內存中擁有正確的數據。 – 2010-11-10 21:25:30