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

时间:2012-03-26 18:45:36

标签: c# entity-framework class inheritance deriving

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

其中一个实体名为Template

创建部分类以扩展Template的功能。

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

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

我该如何解决这个问题?我肯定需要继承EF课程。

修改

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

为什么首先需要从实体类继承?如果要添加一些简单的行为,请使用partial class。

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