Аннотации данных не отображаются для классов частичных сущностей в MVC 4
Я видел десятки объяснений того, как добавлять аннотации метаданных с помощью частичных классов к классам, генерируемым с помощью Entity Framework, database first.
Может ли кто-нибудь сказать мне, почему эти новые значения отображения не отображаются в моих представлениях? Оба они являются частью того же пространства имен, что и мои классы, созданные 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; }
}
Фрагмент представления:
<th>
@Html.DisplayNameFor(model => model.OfCodeID)
</th>
<th>
@Html.DisplayNameFor(model => model.CodeName)
</th>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
3 ответа:
Это было решено! Я посмотрел буквально 30 или 40 учебных пособий о том, почему этот Entity Framework "Database First" partial classes не работал. Затем я нашел этот пост, который дал следующее предложение:
Извините, что так поздно, но я только что решил аналогичный сценарий сам. Я поверьте строке
[MetadataType(typeof (CompanyMD))]
Принадлежит к частичному классу, порожденному EF, даже если он будет будьте стерты, если и когда вы изменитесь модель. Итак, ваш EF-сгенерированный файл должно выглядеть так:
Чтобы увидеть остальную часть поста, перейдите по этой ссылке... MVC 4 EF5 Database First set Default Values in Partial Class
Это может помочь или не помочь кому-то еще, но после выполнения этого руководства (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 из существующей базы данных и еще добавление аннотаций для объектов типа Data и Model-First
Я надеюсь, что это поможет вам.