c# - EntityObjects 是否有允许我访问 OldValue 和 NewValue 的 PropertyChanged 事件?

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

我正在为我的模型层使用 Entity Framework ,我想连接一个 PropertyChanged 事件,该事件根据属性的 OldValue 和 NewValue 更改另一个属性。有没有我可以为此 Hook 的内置方法?

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

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

最佳答案

您有 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 模板以将此代码注入(inject)您的属性(property)或使用代码优先以便您可以直接访问

关于c# - EntityObjects 是否有允许我访问 OldValue 和 NewValue 的 PropertyChanged 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604607/

相关文章:

wpf - ItemsControl MVVM 绑定(bind)

wpf - Caliburn 无法将用户控件加载为 Telerik 的 RadPane 内的 ActiveView

c# - 试图在 IList 中获取索引位置的问题

c# - 适用于 Asp.net 和 C# 的亚马逊产品广告 API

c# - MSTest 抽象类

c# - 如何将两个命令绑定(bind)到 WPF 按钮?

c# - 有没有办法在 DBSet 的查询中包含本地缓存的项目?

c# - 有没有办法使用 LINQ 同时对两个属性进行排序

c# - 如何在单个事务下获得两个工作单元

Java 相当于 C# 中的#region