实体框架数据库首先为生成的所有POCO类添加自定义属性

时间:2016-05-24 13:36:39

标签: c# .net entity-framework

我在所有POCO类中使用EF 6.1.3我有一个带有HTML值的公共字段。我想为所有这些POCO类添加一个公共属性,它将剥离HTML并保持干净的字符串。

目前的POCO课程

public partial class Category
{
    public string Name {get; set;}
    public string Details {get; set;}
}

我希望生成什么

public partial class Category
{
  public string Name {get; set;}
    public string Details {get; set;}
    public string CleanDetails
    { 
        get{ return StripHtml(this.Details ); } 
    } 
}

每次更新实体模型时,我都不应该失去这个自定义属性

public string CleanDetails
    { 
        get{ return StripHtml(this.Details ); } 
    }

尝试使用Mode.Context.tt进行以下更改,但无效

 public string EntityClassOpening(EntityType entity)
    {
        return string.Format(
            CultureInfo.InvariantCulture,
            "{0} {1}partial class {2}{3}",
            Accessibility.ForType(entity),
            _code.SpaceAfter(_code.AbstractOption(entity)),
            _code.Escape(entity),
            _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType) ?? "BaseEntity" ));
    }

我看到有一种方法可以为我需要这个自定义属性的所有人创建部分类。但我需要大约40个课程,未来可能会有更多课程,我希望它更像是自动化方法,然后手动创建40个部分课程。

2 个答案:

答案 0 :(得分:1)

可以implement inheritance in EF6。您可以使用所有共享方法和属性创建基类,然后如果您从中继承了所有实体类型(请参阅链接),您将拥有您所追求的行为。唯一的问题是,如果您从模型中删除了一个表,然后从数据库中重新添加它,则必须再次从基类继承它。

答案 1 :(得分:0)

我在我的数据库项目中为自己生成了另一个文件夹,并在另一个部分类.add CSharp文件中将这些属性添加到该文件夹​​,并插入与您的类(类别)相同的文件名,并更改命名空间

public partial class Category
{
    public string CleanDetails
   { 
        get{ return StripHtml(this.Details ); } 
   } 
}