Аннотации данных не отображаются для классов частичных сущностей в 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 2

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

Я надеюсь, что это поможет вам.