我有一個抽象基類Contact
,它有兩個子類:Person
和Company
。實體框架多繼承?
我想有一個Customer
,Vendor
或其他類型的可以是Company
或Person
(所有共享相同的主鍵ContactId
)。
我的問題是,如果有可能從Contact
繼承所有這些類型?如果答案是否定的,是否有另一個選擇使用PK中的Contact
屬性?這種情況下推薦的設計是什麼?
請注意,我希望Employee
/Customer
等也可以是User
。
我有一個抽象基類Contact
,它有兩個子類:Person
和Company
。實體框架多繼承?
我想有一個Customer
,Vendor
或其他類型的可以是Company
或Person
(所有共享相同的主鍵ContactId
)。
我的問題是,如果有可能從Contact
繼承所有這些類型?如果答案是否定的,是否有另一個選擇使用PK中的Contact
屬性?這種情況下推薦的設計是什麼?
請注意,我希望Employee
/Customer
等也可以是User
。
你會如何在C#中實現這一目標?也就是說,你必須回答自己,因爲.NET不支持多繼承,所以你不能從Person
或/和Company
衍生的單一Customer
類的第一個問題 - 你需要單獨Customer
類從Person
派生和另一Customer
類從Company
衍生而來,但每次你看到這個,你都應該知道你做錯了什麼。此外,如果您將來發現您需要擁有既是Employee
也是Customer
的聯繫人,那麼您將準備好刪除整個應用程序,因爲通過繼承將無法實現此目的。將Contact
從Customer
更改爲Employee
將只能使用直接SQL,因爲EF不允許這樣做。
繼承不解決您的問題 - 您必須使用組合(關係)。
也稱爲策略設計模式。 – Brady
我最終創建了一個'Contact'與'Contact'(可以是'Company'或'Person')的外部關係。 – Shimmy