在几乎所有使用继承的EF方法中,我都看到父类被标记为abstract
。这有什么原因吗?或者只是因为抽象类无法实例化?
答案 0 :(得分:1)
不,这不是强制性的,您的基类不能是abstract
,但正如您已经说过的那样,它是最常见的。它类似于泛化的继承,它从两个或多个类中提取共享特征,并将它们组合成一个通用的超类,这就是为什么常见的将基类视为abstract
。 / p>
在EF中,有三种不同的方法来表示继承层次结构:
在最后一种方法中,如果基类是具体的,那么需要一个额外的表来保存该类的实例。
总之,如果基类是abstract
,那么如果您想要表示的模型中有意义或不合理,则更多地依赖于您。
答案 1 :(得分:0)
我假设因为您覆盖的方法也是抽象的?不能在非抽象类上使用抽象方法。 因此,例如,实例化一个普通的旧DbContext永远不会有意义 - 你总是需要集合属性等。基础DbContext提供了所有DbContext派生所需的功能(连接到数据库等),但作为独立对象并不有用。