假設我在模型中有兩個類:User(映射到USERS表)和PrivilegedUser(繼承User,其他信息存儲在PRIVILEGEDUSERS表中)。實體框架:繼承,更改對象類型
現在,我在USERS(和User的實例)中有一行,並且需要將該用戶轉換爲PrivilegedUser(即在具有相同Id的PRIVILEGEDUSERS中創建記錄)。有沒有辦法做到這一點沒有刪除/插入?
問題是您在模型中沒有PRIVILEGEDUSERS表示法,因此您不能僅創建PrivilegedUser的那部分。
這只是一個例子。 PrivilegedUser可能會有一些折扣或個人經理或另外到普通用戶屬性。同時,還有其他表格需要引用用戶而不管具體的用戶類型。我已經使用Table-per-Type繼承模式實現了它。在數據庫級別,將用戶從一種類型轉換爲另一種類型非常簡單(您只需要從擴展表中插入或刪除記錄)。但在EF中,只有UserSet存儲User和PrivilegedUser對象。這就是爲什麼我問是否有可能用PrivilegedUser替換現有的用戶對象保留現有的Id,並且不刪除USERS表中的記錄。
這是正確的。一個實例應該/永遠不能改變類型。那麼當用戶變爲特權或非特權時會發生什麼? – 2009-08-06 15:20:08
@克雷格,有什麼消息嗎?我遇到了同樣的問題。 – Shimmy 2011-01-23 03:01:10
@Shimmy,「新聞?」什麼新消息?如果你認爲你的對象需要改變類型,那麼你可能會誤用繼承。 @丹丹的回答仍然是一個更好的主意。 – 2011-01-23 03:26:24