2009-09-08 63 views
0

我有一個實體,我想更新狀態屬性。實體框架,更改EntityKey將實體留作「UnChanged」

我想做到以下幾點:

const int NEW_STATUS = 2; 
myEntity.StatusReference.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS); 

當這傳遞到上下文,它的狀態是「保持不變」,儘管我改變關係!這意味着保存將不會被保留。

實體在正在添加是從不同的上下文,其被附連到和保存的所述一個。

任何人都知道我可以如何更新entitykey並堅持下去!?

由於提前,

大衛

回答

0

你不能。 EntityKeys被設計爲映射到主鍵,在任何好的數據庫設計中,主鍵永遠不會改變。如果你已經將你的EntityKey映射到不是PK的東西,那麼將它改爲PK。如果您的數據庫設計需要更改PK,請重新考慮該設計。(刪除你改變的問題後。)

增加,在重新閱讀的問題:你居然想更新實體的的EntityKey,或者你只是想改變狀態屬性?如果是後者,請嘗試以下之一:

entity.Status = someStatusInstance; 

......或者......

entity.StatusReference.EntityKey = myEntity.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS); 

如果實體的狀態沒有改變,你可能有操作順序錯誤時添加以保存上下文。您需要在尋求幫助時顯示。

+0

對不起,我更新了我的文章(錯字)。它的FK不是PK! :) – 2009-09-08 14:44:18

+0

後者,我試過「entity.Status = someStatusInstance」,但是這並不工作,因爲實體處於與我從狀態變回的狀態不同的上下文中!我知道FK的價值,我想更新,所以不需要往返:) – 2009-09-08 14:47:41

+0

不知道訂購是錯誤的..似乎是一個常見的問題,但我似乎無法找到合適的解決方案!這傢伙有一個相似的問題... http://stackoverflow.com/questions/1178885/update-entitykey-reference-in-entity-framework – 2009-09-08 14:49:39