代码之家  ›  专栏  ›  技术社区  ›  Wouter

对EntityObject中的自定义属性引发PropertyChanged

  •  2
  • Wouter  · 技术社区  · 15 年前

    我对EntityObject有几个自定义计算属性。我想启动propertyChanged事件来通知所有绑定。但是这不起作用,当我使用reportpropertychanged时,它会抛出一个argumentexception:

    德伊根沙普名字希夫特格恩盖尔迪格 完全符合操作要求 实体对象。文献杂志 van实体框架voor meer 信息。

    也就是说 Name 不是实体属性,我应该在实体框架文档中查找更多信息。是否有任何方法调用事件并让实体框架忽略它?

    代码示例:

    partial class Preset
    {
        public string Name
        {
            get
            {
                if (this.SystemPreset)
                    return Translate("preset_" + this.Name_Original + "_name");
                else
                    return this.Name_Original;
            }
            set
            {
                if (!value != this.Name_Internal)
                {
                    this.Name_Internal = value;
                    ReportPropertyChanged(Name);
                }
            }
        }
    }
    

    属性名是自定义属性。当我试图通过EntityObject中的ReportPropertyChanged方法触发PropertyChanged时,实体框架将引发异常。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Isak Savo    15 年前

    你应该可以直接打电话 OnPropertyChanged("YourPropertyName") ( msdn )从您的自定义属性设置器和wpf将拿起它。

    这对我在visual studio 2010,.net 4.0中与sqlserver ce数据库对话(我认为它是实体框架4,但我不确定)。

        2
  •  1
  •   Morteza Manavi    15 年前

    报表属性已更改 不是给你用的是EF通知 对象状态管理器 改变 当前值 以便它能够跟踪更改并在稍后调用时生成适当的sql命令 保存更改 对象上下文 .

    也就是说,每个实体的每个标量属性都有其自己版本的2个部分方法供您实现: 在[属性]更改时 更改[属性]时 .
    propertychanging和propertychanged没有默认实现;只有声明。这为您提供了在属性即将更改(propertychanging)以及属性值更改(property changed)之后执行自定义逻辑的机会,您可以使用它们更新自定义计算属性的值。