为什么在EF中进行继承时父类是抽象的?

时间:2016-06-03 13:05:02

标签: entity-framework

在几乎所有使用继承的EF方法中,我都看到父类被标记为abstract。这有什么原因吗?或者只是因为抽象类无法实例化?

2 个答案:

答案 0 :(得分:1)

不,这不是强制性的,您的基类不能是abstract,但正如您已经说过的那样,它是最常见的。它类似于泛化的继承,它从两个或多个类中提取共享特征,并将它们组合成一个通用的超类,这就是为什么常见的将基类视为abstract。 / p>

在EF中,有三种不同的方法来表示继承层次结构:

在最后一种方法中,如果基类是具体的,那么需要一个额外的表来保存该类的实例。

总之,如果基类是abstract,那么如果您想要表示的模型中有意义或不合理,则更多地依赖于您。

答案 1 :(得分:0)

我假设因为您覆盖的方法也是抽象的?不能在非抽象类上使用抽象方法。 因此,例如,实例化一个普通的旧DbContext永远不会有意义 - 你总是需要集合属性等。基础DbContext提供了所有DbContext派生所需的功能(连接到数据库等),但作为独立对象并不有用。