【飛秋】OR層程式碼群組織介紹

來源:互聯網
上載者:User
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屬性內加入校正功能,支援大小/Regex/範圍/時間等驗證

     對於設定檔,預設放在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小時專業轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.