目前在我的应用程序上,我正在记录用户更改的任何值,这很正常。我有一个类对象MyObject
和Logs
对象,并且在每个属性上我都会提出一个事件:
private string _occupation;
[FieldAlias("_occupation")]
public string Occupation
{
get { return _occupation; }
set
{
if (this.Occupation != value)
{
string oldValue = Occupation;
_occupation = value;
NotifyPropertyChanged("Occupation", oldValue, value);
}
}
}
MyObject
类还实现了INotifyPropertyChanged
,我有以下事件:
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged<T>(string propertyName, T oldValue, T newValue)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new Helper.PropertyChangedExtendedEventArgs<T>(propertyName, oldValue, newValue));
}
this.Logs.Add(new Logs
{
CreatedDate = DateTime.Now,
CreatedBy = this.ModifiedBy,
PropertyName = propertyName,
NewValue = (newValue != null) ? newValue.ToString() : "",
OldValue = (oldValue != null) ? oldValue.ToString() : ""
});
}
除了上面的CreatedBy
字段外,一切正常。因为它来自MyObject's
ModifiedBy
属性,所以更新不会立即发生,因为该字段将包含以前用户的名称(希望它有意义)。
如何在发生变化时反映变化,我无法在ModifiedBy
属性上引发事件,因为它将在Logs
表中创建一个新行,那么还有其他选项吗? / p>
答案 0 :(得分:1)
以这种方式使用缓存中的当前用户结束它将正确更新它。