我有一个表每一个分层(品牌)的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