1

現在、私のアプリケーションでは、ユーザーが変更した値をログに記録していますが、これは正常に機能します。クラスオブジェクト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。他のオプションはありますか?

4

1 に答える 1

1

この方法でキャッシュから現在のユーザーを使用することになり、適切に更新されます。

于 2013-02-01T08:53:36.350 に答える