财产变更记录

时间:2013-01-31 15:19:55

标签: c# asp.net object logging properties

目前在我的应用程序上,我正在记录用户更改的任何值,这很正常。我有一个类对象MyObjectLogs对象,并且在每个属性上我都会提出一个事件:

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>

1 个答案:

答案 0 :(得分:1)

以这种方式使用缓存中的当前用户结束它将正确更新它。