我使用EF 4.3 CodeFirst和我有類似這樣的超類型/型號亞型:的EntityFramework 4.3超型晚期初始化
public Person {
long Id { get; set; }
[Required]
string Name { get; set; }
}
public Costumer : Person {
string SomeData { get; set; }
[Required]
string SomeRequiredData { get; set; }
}
這是問題的一個簡化版本。這些表格有幾個字段。 稍後在應用程序中,一個人可以被「推銷」給Costumer。所以Person首先被創建,然後被轉換爲Customer。
問題是:在我創建Person之後,如何在不創建(或重新創建)新Person記錄的情況下將其「升級」給Vendor? 如果我做的:
var costumer = new Costumer {
Id = [same id used before when Person was created],
SomeRequiredData = "Data"
};
模型給出了一個錯誤,說需要這個名字。我不應該要求在新Vendor實例中重複Person中的所有必需信息,因爲它已經存在於原始Person記錄中。
任何人都可以幫忙嗎?
P.S.該模型被配置爲創建2個獨立的表格,每一個類...
謝謝拉迪斯拉夫,這真的是一個將OO建模到數據庫實體的問題。雖然我有兩個表,並且在數據庫的不同時刻創建兩個實體是可以接受的,但不允許使用OO模型。我改變了我的OO模型,在兩個實體之間建立了一對一關係並解決了問題。再次感謝您的提醒。 – 2012-03-06 13:20:55