天天看點

[NHibernate]代碼生成器的使用

<a href="http://www.cnblogs.com/wolf-sun/p/4098873.html#t" target="_blank">寫在前面</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4098873.html#t" target="_blank">文檔與系列文章</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4098873.html#t" target="_blank">代碼生成器的使用</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4098873.html#t" target="_blank">總結</a>

前面的文章介紹了nhibernate的相關知識,都是自己手敲的代碼,有時候顯得特别的麻煩,比如你必須編寫持久化類,映射檔案等等,舉得例子比較簡單,字段比較少,如果一個資料表有幾十個字段,你手敲的話煩都煩死了,不過為了學習nhibernate的文法,初學的過程還是建議自己動手,這樣敲的多了就對每個過程,及映射檔案中的節點的含義有個大緻印象。前面舉的例子,你也會發現這種方式的步驟就是首先建立資料庫,然後編寫持久化類,映射檔案,最後編寫操作資料的代碼,這種方式是典型的資料庫驅動開發(dbdd,database-driven developent)技術。這個步驟能不能反過來?就好比ef中的code first方式,先編碼,然後再生成資料庫。當然可以,可以借助schemaexport工具把資料庫生成了。這裡還是先說說前面使用過得mygeneration代碼生成器的使用把。

什麼是資料庫驅動模型?

對象模型随着資料庫架構的變化而變化。那為什麼還需要這種模型? 一:資料庫是遺留的系統使用的,并且資料庫中已有大量的資料,不能随便更改。 二:你的資料庫架構按照需求分析基本上确定了,不要做任何改動,在系統設計初期已經把資料庫建好了。 使用資料庫驅動模型流程就是當資料庫架構修改時候,映射檔案和持久化類通過代碼生成工具重新生成一下。我們隻要修改應用程式即可。

<a href="http://www.cnblogs.com/wolf-sun/p/3694592.html">[nhibernate]體系結構</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3694901.html">[nhibernate]isessionfactory配置</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3704012.html">[nhibernate]持久化類(persistent classes)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3705229.html">[nhibernate]o/r mapping基礎</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3720259.html">[nhibernate]關聯映射</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3721528.html">[nhibernate]parent/child</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3724052.html">[nhibernate]緩存(nhibernate.caches)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3734249.html">[nhibernate]nhibernate.tool.hbm2net</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3734313.html">[nhibernate]nullables</a>

<a href="http://www.cnblogs.com/wolf-sun/p/3956802.html">[nhibernate]nhibernate如何映射sqlserver中image字段</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4046672.html">[nhibernate]條件查詢criteria query</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4048048.html">[nhibernate]增删改操作</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4049716.html">[nhibernate]事務</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4050714.html">[nhibernate]并發控制</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4067026.html">[nhibernate]元件之依賴對象</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4068749.html">[nhibernate]一對多關系(級聯删除,級聯添加)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4070935.html">[nhibernate]一對多關系(關聯查詢)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4074654.html">[nhibernate]多對多關系(關聯查詢)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4077226.html">[nhibernate]延遲加載</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4082432.html">[nhibernate]立即加載</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4082899.html">[nhibernate]視圖處理</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4083402.html">[nhibernate]n+1 select查詢問題分析</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4085314.html">[nhibernate]存儲過程的使用(一)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4088288.html">[nhibernate]存儲過程的使用(二)</a>

<a href="http://www.cnblogs.com/wolf-sun/p/4093539.html">[nhibernate]存儲過程的使用(三)</a>

前面文章中已經介紹了一種開源的代碼生成器mygeneration,那麼本篇文章我們繼續介紹如何使用開源mygeneration代碼生成工具根據資料庫架構生成映射檔案和持久化類。(假設你已經安裝了mygeneration),由于代碼生成器操作步驟類似,這裡就引用李永京的文章中圖進行說明了,也不考慮版本之間的差異了,知道使用的步驟就可以了。

1、點選“模闆浏覽器”視窗的第三個“線上更新”按鈕:來線上下載下傳模闆。

[NHibernate]代碼生成器的使用

 2、出現“線上模闆庫”視窗,在“線上模闆庫”中提供了各種各樣的模闆,找到nhibernate節點:

[NHibernate]代碼生成器的使用

3、展開nhibernate節點,找到“nhibernate sharp 1.4 [sharpm64]”模闆,右鍵點選“儲存”。這個模闆就自動儲存到本地模闆檔案夾中。

[NHibernate]代碼生成器的使用

4、點選“模闆浏覽器”視窗的第一個“重新整理”按鈕,這個模闆就在“模闆浏覽器”可以看見了,展開nhibernate節點,右擊“執行”nhibernate sharp1.4模闆。

[NHibernate]代碼生成器的使用

5、這就是nhibernate ohm界面視窗,右面顯示表、視圖、操作标簽,在表标簽界面上,右邊有不映射、映射等按鈕,在表中不同的顔色代表字段不同的屬性。

[NHibernate]代碼生成器的使用

6、點選“customerid”列,右邊顯示了這個表,并在狀态欄顯示了“customerid”列的屬性:int類型、主鍵。另外可以自己摸索一下:

[NHibernate]代碼生成器的使用

7、點選“視圖”标簽,設定customerid為主鍵。

[NHibernate]代碼生成器的使用

8、點選“操作”标簽,我們具體設定程式集名稱和命名空間名稱,這裡我設定gendomainmodel,設定生成工程,由于這個模闆不支援vs2008,是以選擇生成ide版本為vs2005。設定輸出路徑。點選ok按鈕。

[NHibernate]代碼生成器的使用

9、這時打開檔案夾,代碼生成工具根據資料庫架構生成了相應的持久化類和映射檔案。

[NHibernate]代碼生成器的使用

10、用vs2008打開,vs2008自動更新gendomainmodel.csproj解決方案檔案,解決方案項目檔案如下

[NHibernate]代碼生成器的使用

11、這時就可以使用了,可以把這個類庫利用添加現有項目功能添加到我們的項目中作為實體持久層,我們利用這個實體持久層編寫資料通路層方法實作對資料庫的crud操作,當然在使用前要搞清楚這個項目的類庫架構,另外由于模闆本身還不是很完善(例如這個模闆不支援版本控制映射、不支援多對多直接映射),是以我們還需要按照實際情況去修改持久化類和映射,顯然無形中增加了一些負擔。

注意不要忘記在hibernate.cfg.xml中修改&lt;mapping assembly="domainmodel"/&gt;為&lt;mapping assembly="gendomainmodel"/&gt;。

關于代碼生成器的部分就說到這裡,畢竟是一個工具,在項目中我用的是動軟的代碼生成器,工具是一個輔助的作用,少敲點代碼,哪個用的順手用哪個!

部落格位址:

<a href="http://www.cnblogs.com/wolf-sun">http://www.cnblogs.com/wolf-sun/</a>

部落格版權:

本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。

如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!

再次感謝您耐心的讀完本篇文章。

轉載:http://www.cnblogs.com/wolf-sun/p/4098873.html