我基本上是重新问这个问题作为唯一和接受的答案不是一个问题的答案。
是否可以告诉EF使用子类EntityObject作为生成的实体类的基类,如下面的子类?
public abstract class CustomEntityObject : EntityObject
{
<additional functionality>
}我问这个问题的原因是,我不想在所有实体类型上添加接口并在单独的部分类文件中实现它们。通过子类EntityObject,我只能实现一次额外的功能。
更新:
EF隐式使用.tt文件生成实体类。隐式地说,我的意思是您看不到项目中的.tt文件。解决方案是明确地添加模板(右键单击.edmx设计器,然后单击“.”,然后添加"ADO.NET EntityObject生成器“)。然后在.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);
}发布于 2012-07-23 13:04:13
问题是,使用默认的T4模板设计器将生成从EntityClass继承的实体类。
要使用模型设计器并能够提供自定义基类,您需要下载http://msdn.microsoft.com/en-us/library/ff477605.aspx (在添加item>online模板之前,这是对如何使用它的描述,但至少在我的vs2012上找不到它了,因为某种原因,它可能已经消失了)模板和编辑模板文件注入您的自定义基类,但我认为大多数程序员使用POCO是有原因的,所以最好是使用没有持久性的类。
发布于 2012-10-08 13:44:07
您可以使用这样的黑客(这是 hack )。
与实体在同一个名称空间中创建类“抽象类EntityObject : System.Data.Objects.DataClasses.EntityObject”。然后可以使用这个类作为基类。
但是如果您想要创建复杂而美观的解决方案--使用T4模板、自定义生成等等--您可以找到解决方案这里、这里。
https://stackoverflow.com/questions/11612110
复制相似问题