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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【飞秋】OR层代码组织介绍

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【飞秋】OR层代码组织介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OR層代碼組織和映射介紹

即時(shí)通訊軟件

?

?

??? OR層也是老生常談了,有的朋友說我是重復(fù)造車輪,只是OR這部分寫的太早了,更主要是的與BLL層代碼的集成,非常方便,所以呢,雖然后來NH和IB出來了我沒有換,MS的Linq出來了,我依然沒有換,經(jīng)過這幾年的應(yīng)用,更堅(jiān)定了自己的想法。

??? 與原來框架的主要差異是把數(shù)據(jù)映射由編碼文件改為配置文件,當(dāng)初考慮是方便寫代碼,用了之后才發(fā)覺這樣太不靈活了,一直托到現(xiàn)在才改

??? 從結(jié)構(gòu)上來說,與原來的框架沒有太多的差異,主要是把配置由自定義屬性改到了配置文件。另外加入了可配置的數(shù)據(jù)校驗(yàn),在Column屬性中加入了一個(gè)ReadOnly的屬性,對(duì)于關(guān)聯(lián)關(guān)系和關(guān)聯(lián)表的處理會(huì)更方便。

<Property PropertyName="Name" FieldName="name" Description="姓名">
? <Column TableName="User" ColumnName="Name" DbType="AnsiString" Length="50" ReadOnly=”true” />
</Property>

???? 其中,ReadOnly默認(rèn)值為false,當(dāng)改為true時(shí),如果更新數(shù)據(jù)庫,此列則會(huì)跳過。加載的時(shí)候,可以根據(jù)實(shí)際需要配置成同步加載或是延遲加載。

???? 另外在Property屬性內(nèi)加入校驗(yàn)功能,支持大小/正則表達(dá)式/范圍/時(shí)間等驗(yàn)證

???? 對(duì)于配置文件,默認(rèn)放在Config/Map/目錄下,規(guī)則為類的全名+.Config的文件:EES.H.Data.User.Config

???? 數(shù)據(jù)庫的定義連接字符串,通過SourceKey進(jìn)行設(shè)置。? <SourceKey>House</SourceKey>

???? 數(shù)據(jù)庫的連接字符串配置在Config/DataSourceConfig.Config 的文件中:

<DataSourceConfig DataSourceType="MSSqlServer" DataSourceKey="House">
? <ConnectionString>server=(local);database=House;Trusted_Connection=true;</ConnectionString>
</DataSourceConfig>?????

???? 在加載的時(shí)候,配置文件會(huì)自動(dòng)被加載,系統(tǒng)不需要顯式處理,這點(diǎn)與常見的NH和IB映射應(yīng)該有一定的不同,并且系統(tǒng)會(huì)自動(dòng)處理Session的打開和關(guān)閉,以及處理多數(shù)據(jù)源等,這些會(huì)以業(yè)務(wù)層代碼里面再作介紹

?

??? 實(shí)體類如下:

??? [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");
??????? }
??? }
}

?? }

?? 對(duì)于實(shí)體類,大同小異,都是從EESObject繼承而來

?? EESData標(biāo)注此類為數(shù)據(jù)類,另外也是為了通過工具生成界面層的視圖。

?? Contract標(biāo)注此類可遠(yuǎn)程序列化,Member為屬性的可序列化,如果沒有此自定義屬性,則此屬性不會(huì)進(jìn)行遠(yuǎn)程傳輸序列化。

?? OnPropertyChanging和OnPropertyChanged在服務(wù)器端的作用不大,主要是對(duì)于客戶端的雙向綁定。

?? 從這幾個(gè)屬性,可以看的出來,數(shù)據(jù)映射類為標(biāo)準(zhǔn)的一般類,由于中間用到了AOP,所以如果要用到校驗(yàn)功能,則需要在屬性前加 virtual 。

?

?? 對(duì)于級(jí)聯(lián)的處理處理方式,采用一級(jí)對(duì)一級(jí)負(fù)責(zé)的處理方式,就如在部隊(duì)里的處理一樣。

?? 對(duì)于一對(duì)多和一對(duì)一的處理采用 關(guān)系配置處理。

?? 對(duì)于主從關(guān)系的處理,還需要手工添加Slave的自定義屬性,在界面生成的時(shí)候,工具會(huì)自動(dòng)生成主從關(guān)系的界面。還要在屬性前增加 virtaul的屬性,則系統(tǒng)會(huì)自動(dòng)處理其層次關(guān)系,如果在客戶端則會(huì)自動(dòng)實(shí)現(xiàn)級(jí)聯(lián)觸發(fā)。

?

??? 映射層的介紹結(jié)束了,寫的不到不明白的地方,請(qǐng)大家批評(píng)指正

?

?

?

關(guān)注技術(shù)文章飛秋:http://www.freeeim.com/,24小時(shí)專業(yè)轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的【飞秋】OR层代码组织介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。