从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged
首先从这一篇的文章标题中可以看出,主要是讲dbml中对实体的属性赋值的相关知识,还有SendPropertyChanging与SendPropertyChanged这两个方法,从第五讲和第六讲中我们看到标题有些雷同,是的,但我讲它们的侧重点不同,第五讲主要讲实体中属性赋值的过程,此时会用到SendPropertyChanging与SendPropertyChanged这两个方法,而第六讲,主要是讲这两个方法的作用,先透露一下,主要讲事件触发机制的,呵呵。
1 public string ExceptionID 2 { 3 get 4 { 5 return this._ExceptionID; 6 } 7 set 8 { 9 if ((this._ExceptionID != value)) 10 { 11 this.OnExceptionIDChanging(value); 12 this.SendPropertyChanging(); 13 this._ExceptionID = value; 14 this.SendPropertyChanged("ExceptionID"); 15 this.OnExceptionIDChanged(); 16 } 17 } 18 }
这是一种其中的dbml实体类中的代码片段,它主要是为ExceptionID这个属性赋值,get部分没什么说的,已经返回这个_ExceptionID字段的值,主要看set部分,它的工作流程是:
1 判断_ExceptionID变量是否等于原来的值
2 如果不等,调用OnExceptionIDChanging方法,表示开始修改这字段,它是一个分部方法,可以由开发人员根据自己的逻辑去实现它
3 调用属性将要被修改方法SendPropertyChanging
4 对字段进行赋值
5 调用属性已经被修改方法SendPropertyChanged,并告诉方法修改的字段为“ExceptionID”
6 OnExceptionIDChanged,表示这个字段已经修改完成
我们主要看一下SendPropertyChanging和SendPropertyChanged
1 protected virtual void SendPropertyChanging() 2 { 3 if ((this.PropertyChanging != null)) 4 { 5 this.PropertyChanging(this, emptyChangingEventArgs); 6 } 7 } 8 9 protected virtual void SendPropertyChanged(String propertyName) 10 { 11 if ((this.PropertyChanged != null)) 12 { 13 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 14 } 15 }
这两个方法是派生自INotifyPropertyChanging和INotifyPropertyChanged这两个接口的,主要作用是通知客户端某个属性将要被修改和已经被修改,在这两个
方法体中,事实上是实现了触以下两个事件的作用
1 public event PropertyChangingEventHandler PropertyChanging; 2 3 public event PropertyChangedEventHandler PropertyChanged;
也就是说,只要属性被修改,那么这两个事实将被触发,那linqtosql为我们提供这个功能有什么作用呢?请看下回。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示