是否实体对象有一个PropertyChanged事件,允许我访问OldValue和NewValue

本文关键字:访问 允许我 OldValue NewValue 事件 实体 对象 有一个 PropertyChanged 是否 | 更新日期: 2023-09-27 18:18:31

我使用实体框架为我的模型层,我想挂钩一个PropertyChanged事件,根据属性的OldValue和NewValue改变另一个属性。是否有一个内置的方法,我可以钩到它?

我想在PropertyChanged事件中的基本逻辑是

if (oldValue.DefaultPropertyA == this.PropertyA)
    this.PropertyA = newValue.DefaultPropertyA;

是否实体对象有一个PropertyChanged事件,允许我访问OldValue和NewValue

你有OnPropertyChanging部分方法。在这里,您可以访问newvalue。

旧值,是属性在那一刻的值,所以你可以通过常规属性访问它。

代码生成文件中的结构如下:

    public global::System.String Property
    {
        get
        {
            return _Property;
        }
        set
        {
            OnPropertyChanging(value);
            ReportPropertyChanging("Property");
            _Property = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("Property");
            OnPropertyChanged();
        }
    }
    private global::System.String _Property;
    partial void OnPropertyChanging(global::System.String value);
    partial void OnPropertyChanged();

正如你所看到的,你可以使用OnPropertyChanging和OnPropertyChanged部分方法来通知属性更改。

如果你想改变正在设置的属性的值,你不能在分部方法中这样做。如果你真的想要这个,你应该改变你的T4模板,将这段代码注入到你的属性中,或者使用code First,这样你就可以直接访问