数据注释未显示MVC 4中的部分实体类

我已经看到了几十个关于如何通过部分类将元数据注释添加到通过entity framework生成的类的解释, 数据库优先

有人能告诉我为什么这些新的显示值没有显示在我的视图中吗? 这两个都是与我的entity framework生成的类相同的命名空间的一部分。

[MetadataType(typeof(xRef_CodesMetadata))] public partial class xRef_Codes { } public class xRef_CodesMetadata { public int CodeID { get; set; } public int CTB_ID { get; set; } [Required(ErrorMessage = "Please type a name")] [Display(Name = "Code Name")] [Column(TypeName = "Code Name")] public string CodeName { get; set; } [Required(ErrorMessage = "Please type a Description")] [Display(Name = "Description")] [Column(TypeName = "Description")] public string Description { get; set; } } 

片段视图:

  @Html.DisplayNameFor(model => model.OfCodeID)   @Html.DisplayNameFor(model => model.CodeName)   @Html.DisplayNameFor(model => model.Description)  

这已经解决了! 我已经看了30个关于为什么这个entity framework“数据库优先”部分类无效的教程。 然后我发现这篇文章给出了以下建议:

对不起,这太晚了,但我自己也解决了类似的问题。 我相信这一行

[MetadataType(typeof运算(CompanyMD))]

属于EF生成的分部类,即使在更改模型时它也会被删除。 因此,您生成的EF文件应如下所示:

要查看post的其余部分,请转到此链接… MVC 4 EF5数据库首先在部分类中设置默认值

这可能会或可能不会帮助其他人,但是在遵循本教程之后( https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/database-first-development/enhancing-data-validation ) 。

我也有类似的问题,我的元数据没有反映在我看来。 我的解决方案是将我的元数据类放在与.edmx文件相同的命名空间中,这一行是键“……,每个都将名称和命名空间与自动生成的类相匹配。”

您必须将xRef_CodesMetadata类声明为partial ,如下所示。

 public partial class xRef_CodesMetadata { public int CodeID { get; set; } public int CTB_ID { get; set; } [Required(ErrorMessage = "Please type a name")] [Display(Name = "Code Name")] [Column(TypeName = "Code Name")] public string CodeName { get; set; } [Required(ErrorMessage = "Please type a Description")] [Display(Name = "Description")] [Column(TypeName = "Description")] public string Description { get; set; } } 

对您有用可能从现有数据库生成EF Code First模型类为数据和模型优先实体添加注释

我希望这会对你有所帮助。