Переопределить Entity Framework Entity Property - PullRequest
5 голосов
/ 17 апреля 2011

У меня есть объект в EF с именем Profile, и я хотел бы добавить атрибуты аннотации данных к свойству FirstName этого объекта. Итак, я создал новый частичный класс примерно так:

public partial class Profile : EntityObject
{
    [Required]
    [Display(Name = "First Name")]
    [EdmScalarPropertyAttribute(EntityKeyProperty = false, IsNullable = false)]
    [DataMemberAttribute()]
    override public global::System.String FirstName
    {
        get
        {
            return _FirstName;
        }
        set
        {
            OnFirstNameChanging(value);
            ReportPropertyChanging("FirstName");
            _FirstName = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("FirstName");
            OnFirstNameChanged();
        }
    }
}

Но я получаю это;

Тип 'CC.Models.Profile' уже содержит определение для 'FirstName'

Есть идеи?

С уважением,
Райан

Ответы [ 3 ]

5 голосов
/ 17 апреля 2011

Вы, к сожалению, не можете изменить это так. Вы должны создать класс метаданных и добавить атрибуты метаданных к этому классу. Смотрите ссылку ниже:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

Взгляните на эту ссылку, чтобы увидеть некоторые проблемы с генерацией класса метаданных, что я обычно делаю, если я изменяю что-то, я просто воссоздаю метаданный класс, добавляя новый сервис и впоследствии удаляя сервис и затем объедините эти два, сохраняя мои старые изменения и сохраняя вновь добавленные сущности.

0 голосов
/ 10 мая 2011

К сожалению, вы не можете добавлять какие-либо аннотации к свойствам, сгенерированным в POCO.

Возможный обходной путь - изменить шаблон TT, чтобы добавить пользовательскую аннотацию, которую вы хотите для данного свойства + объекта, который вы хотитетолько цель.

У меня была такая же проблема в предыдущем проекте, когда я хотел использовать Enterprise Library для реализации проверки.Я закончил тем, что создал частичный класс и написал методы, украшенные аннотациями.

В вашем случае вы можете попробовать создать в частичном классе свойство (с другим именем), которое возвращает свойство сущности EF с аннотациейсверху.

0 голосов
/ 17 апреля 2011

Я считаю, что вы должны пометить вашу собственность как частичную.

На самом деле, я думаю, вы также захотите удалить переопределение (потому что вы не переопределяете родительское свойство.)

...