【发布时间】:2012-07-21 15:56:09
【问题描述】:
我基本上是在重新询问this question,因为唯一且被接受的答案不是问题的答案。
是否可以告诉 EF 使用继承 EntityObject 的类(如下所示)作为生成的实体类的基类?
public abstract class CustomEntityObject : EntityObject
{
<additional functionality>
}
我问的原因是我想停止添加接口并在单独的部分类文件中的所有实体类型上实现它们。通过对 EntityObject 进行子类化,我可以只实现一次附加功能。
更新:
EF 隐式使用 .tt 文件来生成实体类。隐含的意思是您在项目中看不到 .tt 文件。解决方案是显式添加模板(右键单击 .edmx 设计器并单击“添加代码生成项...”,然后添加“ADO.NET EntityObject Generator”)。然后,您更改 .tt 中的单个值:
string BaseTypeName(EntityType entity, CodeGenerationTools code)
{
return entity.BaseType == null ? "EntityObject" : MultiSchemaEscape((StructuralType)entity.BaseType, code);
}
更改为:
string BaseTypeName(EntityType entity, CodeGenerationTools code)
{
return entity.BaseType == null ? "CustomEntityObject" : MultiSchemaEscape((StructuralType)entity.BaseType, code);
}
【问题讨论】:
-
我很确定,这可以正常工作,但还没有尝试过。这是关于使用自定义类作为基础的阅读:msdn.microsoft.com/en-us/library/bb738631(v=vs.90).aspx
标签: c# .net entity-framework inheritance