2010-10-28 3 views
2

Вся сущность, созданная EF, является частичным классом. поэтому он расширяем. Предположим, у меня есть сущности человека, какКак расширить Entity от EF?

partial class Person{FirstName, LastName, .....} 

Затем я хочу добавить вычислительном свойство Name, как:

partial class Person{ 

[DataMember]   
public string Name 
{ 
    get { return String.Format("{0} {1}", this.FirstName, this.LastName); } 
} 

partial void OnFirstNameChanged() 
{ 
    //..... 
    this.ReportPropertyChanged("Name"); 
} 

partial void OnLastNameChanged() 
{ 
    //..... 
    this.ReportPropertyChanged("Name"); 
} 
//.... 
} 

Тогда для операции upate данные я получил следующее сообщение об ошибке: Свойство «Name» не имеет допустимое сопоставление объектов объекта сущности. Для получения дополнительной информации см. Документацию по платформе Entity Framework.

Как исправить это решение?

+0

Вы пытались сделать это для привязки интерфейса? Если да, то что вы в конечном итоге сделали, чтобы он работал? Благодарю. – Chad

ответ

-1

Проблема с этими ReportPropertyChanged("Name"), вы сообщаете ObjectStateManager, что свойство «Name» было изменено, в то время как это свойство не существует в вашей модели метаданных (он только что был объявлен в вашем частичном классе, ObjectContext и ObjectStateManager ничего не знают об этом объекте).
Если вы добавили эти OnLastNameChanged и OnFirstNameChanged частичных методов, просто избавитесь от них, они вам не понадобятся.

+1

Что вам нужно сделать, чтобы, если есть элемент управления WPF, связанный с коллекцией Person, а элемент управления показывает вычисленное свойство Name, что этот столбец обновляется в пользовательском интерфейсе, если смена имени или фамилии? – Chad

0

У меня была такая же ошибка. Не используйте «ReportPropertyChanged()», но вместо этого «OnPropertyChanged()». Вот так.

ReportPropertyChanged() работает только для реальных объектов сущности (например, FirstName и LastName, которые являются, например, реальными полями базы данных), но не для тех вычисляемых (например, Name, которые существуют только в вашем частичном классе).

Смежные вопросы