gpt4 book ai didi

entity-framework - 我应该如何映射多个继承模型之间的关系?

转载 作者:行者123 更新时间:2023-12-03 23:38:35 25 4
gpt4 key购买 nike

我有一个带有每个层次结构表(品牌)和每个类型(车辆)表继承的Eentity Framework模型,如下所示:



(车辆和品牌是抽象类)。

到目前为止,我可以使用Vehicle.OfType<>Brand.OfType<>方法访问linq查询上的派生实体。

现在,在我的概念模型中,品牌实体是与Vehicle息息相关的一对多,所以问题是,我应该如何在EF模型上建立关系,以便可以继续使用Vehicle和Brand之间的导航属性,同时又要保持其一致性。 TPH在Brand?上的继承,我的第一种方法是仅关联派生类,例如:



但是,如果这样做,我将无法直接从Vehicle访问Brand,因此我将必须建立双重关系(在派生和基础之间),例如:



现在这对我有效,但是我仍然以某种方式存在重复的关系,对吗?您有更好的方法吗?我在建模时犯了一些愚蠢的错误吗?

最佳答案

在我看来,您之所以会在模型中进行交叉链接,是因为您是在人为地将Brand和Vehicle分离为顶级同级实体。如果您从品牌(基本上看起来与品牌)等效的品牌开始,那么它将成为真正的顶级实体。无需为每种车辆类型(汽车,摩托车,卡车等)单独区分品牌;只需介绍Make和Vehicle之间的实体模型,我认为这可以解决您的大多数交叉链接问题。

那么关系并不是严格的亲子关系,而是更准确的构成。因此,您有了Make,它与Model具有一对多的复合关系,而后者又与Vehicle具有一对多的复合关系。车辆是模型的实例,因此那里也不存在亲子关系。使用这种结构,无需为每种类型的Vehicle分支EF,因为这只是Model实体描述的一部分。

希望我的回答对您有所帮助,并且我没有错过您尝试建模的任何要点-

关于entity-framework - 我应该如何映射多个继承模型之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com