2013-04-15 90 views
0

在實體框架中,我對實體密鑰的分配知識有非常精確的差距。在實體框架中分配實體密鑰

當您將變量設置爲實體的實體鍵時,如果您先執行代碼或首先進行模型設置,則將該列設置爲標識,但如果我在模型的默認構造函數中將實體鍵分配給0,該怎麼辦?頭等艙,EF做什麼?

EF會注意到它是一個自動分配並忽略了我在構造函數中設置的默認值嗎?

或者我應該永遠不會分配實體密鑰,而不是在im檢索數據時?

回答

1

到目前爲止,我還沒有看到第一種場景,其中絕對沒有替代方法來設置EntityKey對象。但我想你不是指那個,而是設定一個關鍵的值

當密鑰由數據庫(標識列)生成時,設置主鍵值幾乎不是必需的。如果您希望EF插入一個不設置主鍵的實體,但您將其EntityState設置爲Added(直接或間接)。

我能想到的一種情況下,設置主鍵值很有用:使用stub entities。例如,假設您知道ID值爲3的對象A必須被刪除,但對象A尚未從數據庫中獲取。所以沒有哪個對象的狀態可以更改爲Deleted。在這種情況下,您可以通過創建僅填充其Id值的存根實體A阻止往返數據庫,並將其附加到上下文中作爲Deleted並保存更改。