我已经看到了很多关于如何通过部分类将元数据注释添加到通过实体框架生成的类的解释,数据库优先。
有人可以告诉我为什么这些新的显示值没有显示在我的视图中吗?这两个都是与我的实体框架生成的类相同的命名空间的一部分。
[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; }
}
观点片段:
<th>
@Html.DisplayNameFor(model => model.OfCodeID)
</th>
<th>
@Html.DisplayNameFor(model => model.CodeName)
</th>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
答案 0 :(得分:3)
这已经解决了!我已经看了30个40个关于为什么这个实体框架“数据库优先”部分类无效的教程。然后我发现这篇文章提出了以下建议:
抱歉,这太晚了,但我自己也解决了类似的问题。一世 相信这条线[MetadataType(typeof运算(CompanyMD))]
属于EF生成的分部类,即使它会 如果您更改模型,请删除。所以你的EF生成的文件 应该是这样的:
要查看帖子的其余部分,请转到此链接... MVC 4 EF5 Database First set Default Values in Partial Class
答案 1 :(得分:-1)
您必须将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; }
}
对您Generating EF Code First model classes from an existing database和Adding Annotations for Data and Model-First Entities
有用我希望这会对你有所帮助。