日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...

發布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 DBContext的構造方法,方法的重載

二 DBContext實例中,表實體對象是怎么被加入的

三 分部類是否破壞了單一職責

四 分部方法從另一方面定義了類型的操作規范

五 LINQ實體類中對屬性的賦值,變化前與變化后SendPropertyChanging與SendPropertyChanged

六 LINQTOSQL中為我們觸發了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么

七 為DBContext對象應該作為其它實體操作類型的基類,并為它提供統一的提交動作

?

?

先來看一下“百度百科”對單一職責的定義: 一個類,只有一個引起它變化的原因。應該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當一個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如:要實現邏輯和界面的分離。

分部類(Partial)也算是.net的一種新東西,沒有記錯應該是在2.0的時候出現的,MSDN上的定義是:

可以將類或結構、接口或方法的定義拆分到兩個或多個源文件中。 每個源文件包含類型或方法定義的一部分,編譯應用程序時將把所有部分組合起來。

我的理解是:當一個類在一個時間期間不能完成或不確定完成這個類的所有功能時,可以先將這個類定義成partial,它允許你在另一個地方去對同一個類進行補充,這種技術微軟在linq to sql上大大的采用,當然,由于種種原因,這種使用被一些人看來是破壞了類的單一職責原則,其實,在我看來,這只是對同一職責的類,進行的一個補充,類要完成的還是那些事,只是原來不確定要干什么,或者怎么去干,而當它知道如何去實現時,可以定義一個partial,去完善它。linq to sql的代碼由IDE自動生成,所以有些東西對于開發人員是不夠的,而微軟當然知道這一切,所以將它設計成partial,以便讓程序員根據自己的需要對類進行補充,而不是擴展。

1 [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.Web_ExceptionLog")] 2 public partial class Web_ExceptionLog : INotifyPropertyChanging, INotifyPropertyChanged 3 { 4 5 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 6 7 private string _ExceptionID; 8 9 private string _FullInfo; 10 11 private string _Senders; 12 13 private string _HttpMethod; 14 15 private System.DateTime _OccurTime; 16 17 // ……

?

這是IDE自動生成的linq to sql的一個實體對象,我們希望將這個類進行補充,之后的代碼如:

1 public partial class Web_ExceptionLog : Entity.EntityBase 2 { 3 protected override object[] PrimaryKey 4 { 5 get { return new object[] { this.ExceptionID }; } 6 } 7 8 public override IEnumerable<RuleViolation> GetRuleViolations() 9 { 10 throw new NotImplementedException(); 11 } 12 }

?

?

所以說,分部類破壞了類型的單一職責是不準確的,就像好的東西,在不同的人手中所表現出來的力量也是不同的,道理是一樣的。呵呵。

轉載于:https://www.cnblogs.com/lori/archive/2012/03/26/2418816.html

總結

以上是生活随笔為你收集整理的从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。