3

我正在使用 VS2012 启动 MVC4。我还将 EF5 与“数据库优先”方法一起使用来创建我的类。

但是,由于可以重新生成生成的眼镜,我无法将数据注释详细信息用于帮助验证。

我已经看到了一些使用 MetaData 和部分类的代码片段,但我想知道是否有人知道一个小的可编译示例,我可以查看并分解以更好地了解各种类如何相互链接。

非常感谢您的帮助。戴夫

4

1 回答 1

4

您可以通过扩展模型来实现您所需要的。假设 EF 为您生成了以下实体类:

namespace YourSolution
{
    using System;
    using System.Collections.Generic;

    public partial class News
    {
        public int ID { get; set; }
        public string Title { get; set; }                  
        public int UserID { get; set; }

        public virtual UserProfile User{ get; set; }
    }
}

并且您想要做一些工作来保留您的数据注释和属性。因此,请按照以下步骤操作:

首先,在某个地方(无论你想要什么,但最好是在Models)添加两个类,如下所示:

namespace YourSolution
{
    [MetadataType(typeof(NewsAttribs))]
    public partial class News
    {
         // leave it empty.
    }

    public class NewsAttribs
    {            
        // Your attribs will come here.
    }
}

然后将您想要的属性和属性添加到第二类 -NewsAttribs这里。:

public class NewsAttrib
{
    [Display(Name = "News title")]
    [Required(ErrorMessage = "Please enter the news title.")]
    public string Title { get; set; }

    // and other properties you want...
}

笔记:

1)生成的实体类的命名空间和你的类必须相同——这里YourSolution

2)您的第一个类必须partial并且其名称必须与 EF 生成的类相同。

经历这个,你的属性再也不会丢失了......

于 2013-07-25T09:48:55.550 回答