我有一个自定义界面IEntity。我希望我的Entity Framework生成的POCO实体派生自IEntity。目前;我正在为每个Entity Framework实体添加一个分部类并定义;
public partial class Person : IEntity
{
}
public partial class City : IEntity
{
}
通过反射或IoC容器有没有更优雅的方法呢?
注意:在某些情况下,我希望有可能不为某些实体实现IEntity。
注意2:我不想编辑任何tt或edmx文件。
答案 0 :(得分:1)
转到生成实体的T4模板(Something.tt),找到行
<#=codeStringGenerator.EntityClassOpening(entity)#>
此行为每个实体生成类开放字符串,例如
public class Foo
并将其替换为
<#=codeStringGenerator.EntityClassOpening(entity)#> : IEntity
现在生成的实体定义看起来像
public class Foo : IEntity
如果IEntity在不同的命名空间中定义(我认为有点奇怪的情况),你可能还需要使用命名空间添加命名空间。
答案 1 :(得分:0)
您始终可以制作项目模板。所以当你做Add New =&gt;实体类型而不是说正常的类类型。因此,如果您创建“实体类型”,则IEntity已经实现/继承了您设置的任何内容。
http://msdn.microsoft.com/en-us/library/tsyyf0yh.aspx http://visualstudiomagazine.com/articles/2012/08/20/visual-studio-custom-templates.aspx
然后它不是“长期”生成,它只会在您创建文件时生成它,但它会自动生成。