【问题标题】:Entity Framework 4 - How to inject logic in property setter?Entity Framework 4 - 如何在属性设置器中注入逻辑?
【发布时间】:2010-09-16 17:16:21
【问题描述】:

我的 edmx 中有一个从数据库自动生成的属性:描述。然后我为实体创建一个“部分类”.cs 文件并添加一个只读属性:ShortDescription。 ShortDescription 的 getter 只处理 Description(删除换行、回车等)。

如何在 Description 的 setter 上引发 ShortDescription 的属性更改通知?

谢谢!

【问题讨论】:

    标签: entity-framework propertychanged change-notification


    【解决方案1】:

    这将是一个 hack,但可以做到。

    首先,您需要覆盖ReportPropertyChangingReportPropertyChanged。然后检查属性名称的参数......在本例中为“描述”。如果发生这种情况,请使用派生属性名称调用ReportPropertyChangingReportPropertyChanged,在本例中为“ShortDescription”。对于参数的任何其他值,请调用ReportPropertyChanging/Changed 的基本版本。

    编辑:例如:

        protected override void OnPropertyChanging(string property)
        {
            if (property == "Description")
            {
                base.OnPropertyChanging("ShortDescription");
            }
            base.OnPropertyChanging(property);
        }
    
        protected override void OnPropertyChanged(string property)
        {
            if (property == "Description")
            {
                base.OnPropertyChanged("ShortDescription");
            }
            base.OnPropertyChanged(property);
        }
    

    【讨论】:

    • 好吧,我应该得到任何反对...出于某种原因,MS 密封了ReportPropertyChanging/Changed,但留下了OnPropertyChanging/Changed 打开。使用代码示例,而不是散文示例。
    • 谢谢!我忘了看非部分事件! :)
    【解决方案2】:

    方法也是部分的,所以在你的部分类中你可以添加这样的代码

     partial void OnDescriptionChanged()
      {
        OnPropertyChanged("ShortDescription"); 
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      相关资源
      最近更新 更多