EntityObjects有一个PropertyChanged事件,允许我访问OldValue和NewValue吗?

时间:2011-12-22 13:33:04

标签: c# wpf entity-framework mvvm entity-framework-4

我正在为我的模型层使用实体框架,并且我想要根据属性的OldValue和NewValue连接一个更改另一个属性的PropertyChanged事件。有没有我可以为此加入的内置方法?

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

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

1 个答案:

答案 0 :(得分:2)

您有OnPropertyChanging部分方法。在那里,您可以访问新值。

旧值,是该时刻属性的值,因此您可以通过常规属性访问它。

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

    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,这样你就可以直接访问

相关问题