实体框架4 - 如何在属性设置器中注入逻辑?

时间:2010-09-16 17:16:21

标签: entity-framework propertychanged change-notification

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

如何在描述设置器上为ShortDescription提出属性更改通知?

谢谢!

2 个答案:

答案 0 :(得分:4)

这将是一个黑客,但它可以做到。

首先,您需要覆盖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);
    }

答案 1 :(得分:3)

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

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