我有一個表每一個分層(品牌)的Eentity框架模型,也是一個表每種類型(車輛)繼承這樣的:如何映射多個繼承模型之間的關係?
(車輛和品牌是抽象類) 。
到目前爲止,我可以使用Vehicle.OfType<>
或Brand.OfType<>
方法訪問linq查詢上的派生實體。
現在,Brand實體與我的概念模型中的Vehicle有很多關係,所以問題是,我應該如何在EF模型上建立關係,這樣我才能繼續使用Vehicle和Brand之間的導航屬性,但同時保持對品牌的TPH繼承的一致性?我的第一種方法是隻涉及衍生clases,如:
但如果我這樣做,我必須直接從汽車品牌沒有進入,所以我會必須做一個雙重關係(派生和基地之間),如:
這對我來說現在可行,但我仍然有一個重複的關係莫名其妙,是否有更好的方法?,我在我的建模上犯了一些愚蠢的錯誤?
唱反調的問題是什麼的基本點:什麼樣的品牌是本田?恕我直言,你在這裏過度使用繼承。 – 2012-03-13 12:03:57
我知道有品牌同時擁有(汽車和摩托車),但在這種情況下,我們希望將它們區分爲「本田汽車」和「本田拜克斯」,這就是爲什麼您認爲是過度使用? – Milox 2012-03-13 15:46:51
因爲對象只能有一種類型。即使你認爲這對本田來說也是合適的,但對任何地方的每個品牌來說都是不對的。使用類型作爲單個業務屬性的標誌,可以將您帶入難以發展架構的角落。我將這個模型作爲一個關聯進行建模:[品牌:Honda]與[CarBrand:HondaCars]相關(即2個實例,而不是層次結構)。那麼你可以將基數從1:1更改爲1:*,如果你想擁有一個可以包含兩者的品牌。 – 2012-03-13 18:11:02