Как продлить Entity от EF? - PullRequest
       2

Как продлить Entity от EF?

2 голосов
/ 28 октября 2010

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

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

Затем я хочу добавить свойство compute 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");
}
//....
}

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

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

Ответы [ 2 ]

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

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

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

0 голосов
/ 28 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...