从C#中的实体框架生成的类派生

Rah*_*han 5 c# inheritance entity-framework class deriving

我创建了一个实体数据模型并从中生成了一个数据库.

其中一个实体被称为Template.

创建了部分类来扩展工作的功能Template.

如果我创建一个新类并尝试派生Template,我在实例化时得到一个运行时异常:

Mapping and metadata information could not be found for EntityType 'Template001'.

我该如何解决这个问题?我肯定需要继承EF类.

编辑

似乎不可能.如果是这种情况,那么实现以下要求的最佳方式是:模板实体存储有关每个都有自己的代码要执行的模板的信息.这就是为什么我试图从实体派生出来的原因.

Lad*_*nka 5

它不受支持.您无法从实体派生新类型,而是使用它而不是映射的实体类型来实现持久性.如果要从实体派生类,则必须使用映射继承,其中每个子项也映射到数据库.


Ser*_*kin 4

为什么首先需要继承实体类呢?如果您想添加一些简单的行为,请使用分部类。

更新:根据评论,该行为似乎有可能随着时间的推移而延长。在这种情况下,我建议使用组合/聚合,而不是继承。让需要扩展的类有一个实体作为字段。在 Raheel 的场景中,它将是一个名为 TemplateLogic 的类,其字段/属性为 Template 类型。

  • 然后简单地使用组合,而不是继承。让需要扩展的类有一个实体作为它的字段。在您的场景中,您将拥有名为 TemplateLogic 的类,其字段/属性为 Template 类型。 (4认同)