1

从 EF 4 实体图开始并使用 T4 模板,可以创建可在域模型中使用的 POCO 类。生成的代码如下所示:

public partial class Product
{
    public virtual int Id
    {
        get;
        set;
    }

    public virtual string Name
    {
        get;
        set;
    }
   //and so on
}

是否有任何优雅的方法来添加我自己的代码来实现属性?例如,我想通过降低所有字符来实现名称设置器。我希望我的代码能够抵抗从 EF 图中重复生成 POCO 类。

这个要求有点类似于向 POCO 类添加验证代码。这个问题已经通过创建一个单独的验证类并通过MetadataType属性链接到 POCO 来解决。从 EF 图中重复生成 POCO 不会覆盖该单独的验证类。

谢谢,

卢西安

4

1 回答 1

1

不,没有简单的方法可以做到这一点。您不得触摸生成的代码,因为您的更改将在每次重新生成后被删除。您的选择是:

  • 自己编写实体,不要使用生成器——你将完全控制实体代码
  • 修改生成器中的 T4 模板以添加您的直接代码(这可能很难概括)或只是在 getter 和 setter 以及实体类实现的部分部分中添加对部分方法的调用(您还必须在生成器中声明这些方法)您需要的部分方法。
于 2011-12-12T14:20:57.857 回答