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

发布于 2024-09-19 11:30:18 字数 264 浏览 4 评论 0原文

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

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

谢谢!

I have a property auto-generated from database in my edmx: Description. I then create a "partial class" .cs file for the entity and add a read-only property: ShortDescription.
ShortDescription's getter simply processes Description (removes line feed, carriage return, etc).

How can I raise property change notification for ShortDescription on the setter of Description?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

焚却相思 2024-09-26 11:30:18

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

首先,您需要覆盖 ReportPropertyChangingReportPropertyChanged。然后检查您的属性名称的参数...在本例中为“描述”。如果发生这种情况,请使用派生属性名称(在本例中为“ShortDescription”)调用 ReportPropertyChangingReportPropertyChanged。对于参数的任何其他值,请调用 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);
    }

This is going to be a hack, but it can be done.

First, you need to override ReportPropertyChanging and ReportPropertyChanged. Then check the parameter for the name of your property... in this case "Description". If it occurs, call ReportPropertyChanging or ReportPropertyChanged with the derived property name, in this case "ShortDescription". For any other value of the parameter, call the base version of ReportPropertyChanging/Changed.

Edit: For example:

    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);
    }
夜声 2024-09-26 11:30:18

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

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

The methods are partial also, so in your partial class you can add code like this

 partial void OnDescriptionChanged()
  {
    OnPropertyChanged("ShortDescription"); 
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文