0

我有一個抽象基類Contact,它有兩個子類:PersonCompany實體框架多繼承?

我想有一個CustomerVendor或其他類型的可以是CompanyPerson(所有共享相同的主鍵ContactId)。

我的問題是,如果有可能從Contact繼承所有這些類型?如果答案是否定的,是否有另一個選擇使用PK中的Contact屬性?這種情況下推薦的設計是什麼?

請注意,我希望Employee/Customer等也可以是User

回答

1

你會如何在C#中實現這一目標?也就是說,你必須回答自己,因爲.NET不支持多繼承,所以你不能從Person或/和Company衍生的單一Customer類的第一個問題 - 你需要單獨Customer類從Person派生和另一Customer類從Company衍生而來,但每次你看到這個,你都應該知道你做錯了什麼。此外,如果您將來發現您需要擁有既是Employee也是Customer的聯繫人,那麼您將準備好刪除整個應用程序,因爲通過繼承將無法實現此目的。將ContactCustomer更改爲Employee將只能使用直接SQL,因爲EF不允許這樣做。

繼承不解決您的問題 - 您必須使用組合(關係)。

+0

也稱爲策略設計模式。 – Brady

+0

我最終創建了一個'Contact'與'Contact'(可以是'Company'或'Person')的外部關係。 – Shimmy