我想爲我的實體實現「默認」Id生成支持。將實體ID分配給EntityFramework實體4
保存實體時,我希望EntityFramework只爲實體生成id值(如果它尚未設置)。如果ID已經有一個非空值,非零值,我希望實體保存在數據庫中時保留該實體ID。
我正在將數據從遺留數據模型(從舊數據庫創建的EntityFramework模型)遷移到新創建的(模型優先的)EntityFramework模型。我們稱之爲舊模型A和新模型T.
通常,我希望T實體在保存時獲得它們的ID(它們都是int64),以便長期使用新模型。
目前,我明確分配T實體ID基於我正在遷移相應的A實體的Id。這是如此,遷移結果很容易檢查。但是,儘管我可以將T實體的ID分配給與我的遷移例程中的A實體相同的ID,但在保存實體後,Id值已更改。
是否有一種方法可以覆蓋T模型中所有實體的默認保存方法,因此只有在實體尚未保存之前,纔會指定id值?
我已經看過一些其他EntityFramework/Id的問題,但在我看來,他們都沒有問同樣的事情。
感謝您的任何線索。
感謝您的回覆,編輯。你的意思是「強制標識不被設置」在數據庫中?如果是這樣,那麼可以在實體的屬性中設置生成模型,以便完全禁用數據庫中的ID生成。我正在尋找的是在數據庫中自動分配身份的情況,如果它尚未分配的話。 IOW,有條件的或默認的分配。 – 2011-04-14 01:25:52
上面的代碼確實會強制密鑰不被設置。聽起來像我們不是你在找什麼。我知道EF可以幫你做什麼。 – 2011-04-14 05:15:37
再次感謝您的回覆,Ed。我想也許我可以將這種技術用於必須執行數據遷移並通過將偏分類置於遷移代碼本身中來顯式分配鍵的場景,然後允許EF在新的生產應用程序中爲我生成密鑰。我會快速回答你的答案,但不要選擇它作爲*答案,因爲我仍然想要得到我的問題中描述的行爲。 – 2011-04-16 04:31:04