从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...
一 DBContext的構(gòu)造方法,方法的重載
二 DBContext實(shí)例中,表實(shí)體對(duì)象是怎么被加入的
三 分部類是否破壞了單一職責(zé)
四 分部方法從另一方面定義了類型的操作規(guī)范
五 LINQ實(shí)體類中對(duì)屬性的賦值,變化前與變化后SendPropertyChanging與SendPropertyChanged
六 LINQTOSQL中為我們觸發(fā)了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么
七 為DBContext對(duì)象應(yīng)該作為其它實(shí)體操作類型的基類,并為它提供統(tǒng)一的提交動(dòng)作
分部方法,partial method,它要求必須定義在分部類里,上一文章已經(jīng)說過分部類,相信各位已經(jīng)以它有了一個(gè)認(rèn)識(shí)了,今天主要說分部方法,分部方法主要是為了以后有可能要實(shí)現(xiàn)某個(gè)功能,而為這個(gè)功能定義的方法,這在linq to sql的DBML文件中表現(xiàn)的很突出,看代碼:
public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged{private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);private int _ID;private string _Name;private int _ParentID;#region 可擴(kuò)展性方法定義 partial void OnLoaded();partial void OnValidate(System.Data.Linq.ChangeAction action);partial void OnCreated();partial void OnIDChanging(int value);partial void OnIDChanged();partial void OnNameChanging(string value);partial void OnNameChanged();partial void OnParentIDChanging(int value);partial void OnParentIDChanged();#endregion public Category(){OnCreated();} } 我們看到微軟為一個(gè)linq實(shí)體添加自動(dòng)添加了幾個(gè)分部方法,但并沒有去實(shí)現(xiàn)它,在我們開始程序時(shí),可以在它進(jìn)行實(shí)現(xiàn),但會(huì)引用一些方法,如OnCreated方法,而我們?cè)?span style="color:rgb(43,145,175);">Category 分部類 中可以為OnCreated方法進(jìn)行實(shí)現(xiàn),從而達(dá)到當(dāng)建立實(shí)體實(shí)例時(shí),執(zhí)行我們的代碼。分部方法從另一方面定義了類型的操作規(guī)范,這句話是今天的主題,從上面的代碼中可以看到,事實(shí)也是這樣,分部方法標(biāo)注了類可以包括的行為,并把這些行為進(jìn)行調(diào)用,而行為主體可以由開發(fā)者自己去確定,怎么樣,很靈活吧!
看一下在我的項(xiàng)目中是如何使用分部方法的,它實(shí)現(xiàn)了每次實(shí)例化對(duì)象時(shí),自動(dòng)執(zhí)行方法體里的代碼的功能,本代碼段的功能是為實(shí)體訂閱一個(gè)列修改的事件。 public class UserBases_Ext : UserBases { }public partial class UserBases : EntityBase{protected override object[] PrimaryKey{get { return new object[] { this.UserID }; }}/// <summary>/// 實(shí)體初始化時(shí)自動(dòng)執(zhí)行,在linqtosql的源文件里有定義 /// </summary>partial void OnLoaded(){if (this.IsValid)//實(shí)體是否驗(yàn)證通過 {base.Initialization();//基類的某些屬性初始化 this.PropertyChanged += new PropertyChangedEventHandler(base.PropertyChangedEvent);//初始實(shí)體時(shí),先訂閱列修改的事件}
本文轉(zhuǎn)自博客園張占嶺(倉儲(chǔ)大叔)的博客,原文鏈接:從微軟的DBML文件中我們能學(xué)到什么(它告訴了我們什么是微軟的重中之重)~四 分部方法從另一方面定義了類型的操作規(guī)范,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原博主。
總結(jié)
以上是生活随笔為你收集整理的从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 朋友圈超短好句摘抄212个
- 下一篇: 自定义会话状态存储提供程序