Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2

            就以一個簡單的DirectCenter項目開始介紹這個框架吧,DirectCenter主要分爲用戶管理,部門管理,公司管理三個模塊。首先先搭建起解決方案DirectCenter:
          DirectCenter:           
                   DirectCenter.Model    (類庫項目)實體類庫,其中包括hibernate映射文件(可以把映射文件放到DAL層,這樣使Model也比較單純,而DAL則只是Nhibernate的完整實現)
                   DirectCenter.IDAL     (類庫項目)數據訪問層接口   
                   DirectCenter.DAL       (類庫項目)數據庫訪問層實現(採用NHibernate)
                   DirectCenter.IBLL     (類庫項目)業務層接口
                   DirectCenter.BLL      (類庫項目)業務層實現(使用IDAL,通過spring.net的IOC注入實際的數據訪問層)
                   DirectCenter.App      (類庫項目)系統的配置,其中包括Nhibernate,Spring.net的一些配置信息,業務層的DAL注入.
                   DirectCenter.UnitTest  (類庫項目)  使用nunit對業務層進行單元測試

                   DirectCenter.DTO    (類庫項目)    data transform  object 用於和前臺UI層交互的實體。之所以分出來,也是爲了考慮不只是爲了Web項目,同時包括WebService等其它UI.(可能會有不少人會問已經有Model了,爲什麼還需要DTO?)

                   DirectCenter.Controllers  (類庫項目)   Web控制器。用戶請求和後臺業務層的中轉,接收並分析用戶請求,調用業務層完成請求,再分發給用戶。(注意這裏調用的是IBLL,是業務邏輯接口,也是通過Spring.Net的IOC注入具體的業務實現)。
                  
DirectCenter.Web (Web Application)  單純的View層,主要由ExtJs完成界面和Ajax請求。

              當然,這裏也可以加一個Controllers的單元測試項目,不過我覺得這裏很多時候用處不是很大。因爲這裏Controllers的工作比較統一和單純了。
         首先先設計和建立數據庫,字段和說明如下:
            未命名.bmp

        數據庫中沒有外鍵關係,因爲一對多,多對多這些關係使用NHibernate的持久層建立和維護,每個表中都有一個Version字段,這是爲了使用Nhibernate內置的對象的版本控制來解決併發問題。
       接下來的工作就簡單了許多,因爲今天我們只要完成實體就行,而實體類和映射文件的工作有一些輔助工具可以幫我們生成,比如codesmith,Nconstruct,Database2Sharp等,不過我還沒有發現哪個工具能夠很好的生成關係映射.這裏只把User的類和映射文件放在這裏,其它的兩個可以在源代碼附件中找到。

User.cs

 

 

User.hbm.xml

   注:User的表名和實體名不一致的原因是因爲User是數據庫中的關鍵字。另外需要注意的是,映射文件中的命名空間要正確,映射文件(*.hbm.xml)不要忘了設置成Embedded Resource (嵌入式資源)。
     
    數據庫設計,實體,映射文件是使用這個框架開發最關鍵的,畢竟是轉換需求的最重要的一步。如果設計的好的話,接下來的開發相對容易多了。下次介紹數據訪問層和業務層的實現。
   
   代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章