【飞秋】OR层代码组织介绍
OR層代碼組織和映射介紹
即時通訊軟件
?
?
??? OR層也是老生常談了,有的朋友說我是重復造車輪,只是OR這部分寫的太早了,更主要是的與BLL層代碼的集成,非常方便,所以呢,雖然后來NH和IB出來了我沒有換,MS的Linq出來了,我依然沒有換,經過這幾年的應用,更堅定了自己的想法。
??? 與原來框架的主要差異是把數據映射由編碼文件改為配置文件,當初考慮是方便寫代碼,用了之后才發覺這樣太不靈活了,一直托到現在才改
??? 從結構上來說,與原來的框架沒有太多的差異,主要是把配置由自定義屬性改到了配置文件。另外加入了可配置的數據校驗,在Column屬性中加入了一個ReadOnly的屬性,對于關聯關系和關聯表的處理會更方便。
<Property PropertyName="Name" FieldName="name" Description="姓名">
? <Column TableName="User" ColumnName="Name" DbType="AnsiString" Length="50" ReadOnly=”true” />
</Property>
???? 其中,ReadOnly默認值為false,當改為true時,如果更新數據庫,此列則會跳過。加載的時候,可以根據實際需要配置成同步加載或是延遲加載。
???? 另外在Property屬性內加入校驗功能,支持大小/正則表達式/范圍/時間等驗證
???? 對于配置文件,默認放在Config/Map/目錄下,規則為類的全名+.Config的文件:EES.H.Data.User.Config
???? 數據庫的定義連接字符串,通過SourceKey進行設置。? <SourceKey>House</SourceKey>
???? 數據庫的連接字符串配置在Config/DataSourceConfig.Config 的文件中:
<DataSourceConfig DataSourceType="MSSqlServer" DataSourceKey="House">
? <ConnectionString>server=(local);database=House;Trusted_Connection=true;</ConnectionString>
</DataSourceConfig>?????
???? 在加載的時候,配置文件會自動被加載,系統不需要顯式處理,這點與常見的NH和IB映射應該有一定的不同,并且系統會自動處理Session的打開和關閉,以及處理多數據源等,這些會以業務層代碼里面再作介紹
?
??? 實體類如下:
??? [EESData()]
??? [Contract()]
??? public class User : EESObject
??? {
???????? protected String name;
/// <summary>
/// 姓名
/// </summary>
[Member(3)]
public virtual String Name
{
??? get
??? {
??????? return name;
??? }
??? set
??? {
??????? if ((name != value))
??????? {
??????????? this.OnPropertyChanging("Name");
??????????? name = value;
??????????? this.OnPropertyChanged("Name");
??????? }
??? }
}
?? }
?? 對于實體類,大同小異,都是從EESObject繼承而來
?? EESData標注此類為數據類,另外也是為了通過工具生成界面層的視圖。
?? Contract標注此類可遠程序列化,Member為屬性的可序列化,如果沒有此自定義屬性,則此屬性不會進行遠程傳輸序列化。
?? OnPropertyChanging和OnPropertyChanged在服務器端的作用不大,主要是對于客戶端的雙向綁定。
?? 從這幾個屬性,可以看的出來,數據映射類為標準的一般類,由于中間用到了AOP,所以如果要用到校驗功能,則需要在屬性前加 virtual 。
?
?? 對于級聯的處理處理方式,采用一級對一級負責的處理方式,就如在部隊里的處理一樣。
?? 對于一對多和一對一的處理采用 關系配置處理。
?? 對于主從關系的處理,還需要手工添加Slave的自定義屬性,在界面生成的時候,工具會自動生成主從關系的界面。還要在屬性前增加 virtaul的屬性,則系統會自動處理其層次關系,如果在客戶端則會自動實現級聯觸發。
?
??? 映射層的介紹結束了,寫的不到不明白的地方,請大家批評指正
?
?
?
關注技術文章飛秋:http://www.freeeim.com/,24小時專業轉載。
總結
以上是生活随笔為你收集整理的【飞秋】OR层代码组织介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VTK修炼之道4_Win32控制台项目
- 下一篇: 09-03-06 FreeEIM 姗姗来