实体框架生成的类的数据注释

时间:2014-05-07 15:51:12

标签: asp.net-mvc entity-framework

我使用MVC 5和Entity Framework(6.0.2),我的一个类生成为:

public partial class Proc_Result
{
    public int Id { get; set; }
    public string RegistrationNumber { get; set; }
    public string Name { get; set; }
    public Nullable<System.DateTime> DateOfEntry { get; set; }
    public string Drawer { get; set; }
}

我想拥有它以便DateOfEntry具有以下数据注释: [DisplayFormat(DataFormatString =&#34; {0:dd / MM / yyyy}&#34;,ApplyFormatInEditMode = true)]

除了能够将[DisplayName(..)]添加到其他字段外,这可能吗?我知道我可以手动更改生成的cs文件,但是每当我从db更新时,我都会丢失这些更改。否则我可以构建我自己的模型并映射它,但想看看是否还有其他方法。

我考虑创建另一个名为Proc_Result的分部类,但是如果我只包含相同的DateOfEntry,它会覆盖另一个吗?

1 个答案:

答案 0 :(得分:1)

我在这里找到了解决方案: http://ryanhayes.net/blog/data-annotations-for-entity-framework-4-entities-as-an-mvc-model/ 基本上我必须这样做:

    [MetadataType(typeof(Proc_ResultMetaData))]
public partial class Proc_Result
{
    // Note this class has nothing in it.  It's just here to add the class-level attribute.
}

public partial class Proc_ResultMetaData
{
    public int Id { get; set; }
    [DisplayName("Registeration Number")]
    public string RegistrationNumber { get; set; }
    public string Name { get; set; }

    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
    public Nullable<System.DateTime> DateOfEntry { get; set; }
    public string Drawer { get; set; }
}

这让它发挥作用。