我可以从数据库生成EF模型并让所有模型实现接口吗?

时间:2011-10-25 21:46:56

标签: asp.net entity-framework

我有一个现有的SQL数据库,其中所有表都有一个ID列作为主键。我可以从此数据库生成实体框架模型并确保所有生成的类型都从定义ID属性的接口继承吗?

基本上,我希望从数据库返回的所有内容都能实现:

public interface IDatabaseTable
{
    public int ID { get; set; }
}

2 个答案:

答案 0 :(得分:2)

我希望你使用EntityFramework 4,如果你需要使用T4模板来生成实体和数据上下文,你可以从这里下载

http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313

比你设置它时,你需要修改T4模板来生成继承。

因此,您将获得两个模板,一个模板生成数据上下文,另一个模板生成实体。

您需要修改第二个(实体生成器模板),转到实体.tt文件的第41行并在那里添加继承:

<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#> : IDatabaseTable

有关T4 POCO的详细信息,请点击此处

http://sharedtolearn.blogspot.com/2010/06/entity-framework-40-and-t4-templates-to.html

http://msdn.microsoft.com/en-us/data/gg558520

答案 1 :(得分:0)

有关部分类的信息,请参阅this MSDN page

简而言之,您可以为EF实体创建一个分部类,并实现您想要的任何接口。

以下是MSDN页面中的文档:

以下内容与所有部分类型定义合并:

XML comments

interfaces

generic-type parameter attributes

class attributes

members

例如,请考虑以下声明:

partial class Earth : Planet, IRotate { }
partial class Earth : IRevolve { }

它们等同于以下声明:

class Earth : Planet, IRotate, IRevolve { }