中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

從微軟(ruan)的(de)DBML文件(jian)中(zhong)我(wo)們(men)能學到什么(它告訴了我(wo)們(men)什么是(shi)微軟(ruan)的(de)重(zhong)中(zhong)之(zhi)重(zhong))~五 LINQ實體類(lei)中(zhong)對(dui)屬性的(de)賦值,變化(hua)前(qian)與變化(hua)后SendPropertyChanging與SendPropertyChanged

回到目錄

首先從這(zhe)一篇的文(wen)章標題(ti)中(zhong)可以看(kan)(kan)出,主(zhu)要(yao)(yao)是講dbml中(zhong)對實體的屬性(xing)(xing)賦值的相關(guan)知識,還有SendPropertyChanging與SendPropertyChanged這(zhe)兩個(ge)方法(fa),從第五講和第六講中(zhong)我們看(kan)(kan)到標題(ti)有些雷同,是的,但我講它們的側(ce)重點不同,第五講主(zhu)要(yao)(yao)講實體中(zhong)屬性(xing)(xing)賦值的過程(cheng),此時會用到SendPropertyChanging與SendPropertyChanged這(zhe)兩個(ge)方法(fa),而第六講,主(zhu)要(yao)(yao)是講這(zhe)兩個(ge)方法(fa)的作用,先透露一下(xia),主(zhu)要(yao)(yao)講事件觸發(fa)機(ji)制的,呵呵。


 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        }

 

 

這是一種其中(zhong)的(de)(de)dbml實(shi)體類中(zhong)的(de)(de)代碼片段(duan),它主(zhu)要是為(wei)ExceptionID這個屬性賦值(zhi),get部分沒什么說的(de)(de),已經返(fan)回這個_ExceptionID字段(duan)的(de)(de)值(zhi),主(zhu)要看set部分,它的(de)(de)工作流(liu)程是:

1 判斷(duan)_ExceptionID變(bian)量是否(fou)等于(yu)原來(lai)的值

2 如果不等,調用OnExceptionIDChanging方法,表示開始修改這字段,它是一(yi)個分部方法,可以由開發(fa)人員根(gen)據(ju)自己的邏輯去實現它

3 調(diao)用(yong)屬(shu)性將要被修改方法SendPropertyChanging

4 對字段進行賦值

5 調用屬性(xing)已經被修(xiu)改方(fang)法SendPropertyChanged,并告訴方(fang)法修(xiu)改的字段為“ExceptionID”

6 OnExceptionIDChanged,表示(shi)這個字段已經(jing)修改完成

 

我(wo)們主要(yao)看一(yi)下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       }

 

 

這(zhe)兩(liang)(liang)個(ge)方法是(shi)(shi)派(pai)生(sheng)自INotifyPropertyChanging和(he)(he)INotifyPropertyChanged這(zhe)兩(liang)(liang)個(ge)接(jie)口的,主要作用是(shi)(shi)通知客戶端某個(ge)屬(shu)性將要被修改(gai)和(he)(he)已經被修改(gai),在這(zhe)兩(liang)(liang)個(ge)

方法體中,事(shi)(shi)實上(shang)是(shi)實現了觸以下兩個(ge)事(shi)(shi)件的作用


1    public event PropertyChangingEventHandler PropertyChanging;
2 
3    public event PropertyChangedEventHandler PropertyChanged;

 

也就是說(shuo),只要屬性(xing)被修改(gai),那(nei)么這兩個事實將被觸發,那(nei)linqtosql為我們提供(gong)這個功能有什么作用呢?請看下回。

回到目錄

posted @ 2012-03-27 23:30  張占嶺  閱讀(1873)  評論(1)    收藏  舉報