У меня проблема с тем, что событие PropertyChanged из сгенерированных объектов Ria Services не вызывается для всех свойств.
Когда я смотрю на сгенерированный код (на стороне клиента), я вижу, что мои сущности являются производными от объекта Entity , который реализует INotifyPropertyChanged . Я также вижу, что некоторые свойства, например свойство Id , вызывают событие PropertyChanged , а некоторые - нет.
Я не использовал шаблоны T4, поэтому были использованы настройки по умолчанию.
Итак, мой вопрос:
Есть ли параметр / атрибут, который я могу установить, чтобы событие PropertyChanged вызывалось для любых свойств сгенерированных клиентских объектов?
Буду признателен за любую помощь.
EDIT:
Вот пример свойства в автоматически сгенерированном клиентском файле, который не вызывает событие PropertyChanged :
[DataMember()]
[Required()]
[StringLength(50)]
public string FirstName
{
get
{
return this._firstName;
}
set
{
if ((this._firstName != value))
{
this.OnFirstNameChanging(value);
this.RaiseDataMemberChanging("FirstName");
this.ValidateProperty("FirstName", value);
this._firstName = value;
this.RaiseDataMemberChanged("FirstName");
this.OnFirstNameChanged();
}
}
}
И это то, что было определено в модели на стороне сервера :
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String FirstName
{
get
{
return _FirstName;
}
set
{
OnFirstNameChanging(value);
ReportPropertyChanging("FirstName");
_FirstName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("FirstName");
OnFirstNameChanged();
}
}
Вот пример свойства в автоматически сгенерированном клиентском файле, который вызывает вызывает событие PropertyChanged :
[DataMember()]
[Editable(false, AllowInitialValue=true)]
[Key()]
[RoundtripOriginal()]
public Guid Id
{
get
{
return this._id;
}
set
{
if ((this._id != value))
{
this.OnIdChanging(value);
this.ValidateProperty("Id", value);
this._id = value;
this.RaisePropertyChanged("Id");
this.OnIdChanged();
}
}
}
И это то, что было определено в модели на стороне сервера :
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}