MVC Note (4) In NHibernate Part 1. Create Mapping XML
雖然有 Entity Framework 4.0,不過身為一個程式設計師仍然想嘗試一些東西,來折磨自己 (誤... , NHibernate 出來也有一段時間 , 現在也堂堂進入了 3.0 alpha3,對此有興趣的人也可以來這個網站 NHibernate Forge 逛逛 , 可以發現一堆好玩的東西。
話說回來,用 NHibernate 來實作資料底層設計及開發時,自己會覺得似乎沒那麼人性,雖然現在有一堆工具可以輔助設計,像 NHibernate Entity Generator 來協助我們快速產出對應的 XML,不過在學習期間還是自己慢慢刻比較好,等到熟悉了,較上手了再偷懶用工具來產生好了。
接下來講實作的過程,這次我用一個類通訊錄的範例來講解:
- Step 1 : 先至 NHibernate Forge 下載需要使用的 bin
現在官方釋放出來的版本為 2.1.2,想要嘗鮮的人也可以下載 3.0.0 alpha 3 來試用,如果還想嘗試其他的,就比較建議使用 2.1.2 的版本。下載後為一個壓縮檔,幾乎可以說是一個套件包了,其中的 nhibernate-configuration.xsd 及 nhibernate-mapping.xsd 這兩個檔複製到 x:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas 資料夾內,以利後續在 Visual Studio 編輯及建立 XML 文件時可以選擇結構描述。
- Step 2 : 建立一個 ASP.NET MVC 2 Web 應用程式專案或 ASP.NET MVC 2 空白 Web 專案
- Step 3 : 在 Models 資料夾內建一個 Person.hbm.xml 的文件 (一定要打hbm喔)。
- 在結構描述選擇 nhibernate-mapping.xsd ,如下圖 (小提示 : 在編輯區的空白處點一下,可以看到屬性項目會變動,然後就看到結構描述的屬性)
2. 點選 Person.hbm.xml,滑鼠左鍵選擇屬性,再設定屬性內的建置動作為內嵌資源。
建立的內容如下 :
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MvcApplication1">
<class name="MvcApplication1.Models.Person" table="PersonList" lazy="false">
<id name="ID" column="PersonID" type="Guid">
<generator class="guid"></generator>
</id>
<property name="Name" column="PersonName" type="string" not-null="true" length="20"></property>
<property name="Sex" column="PersonSex" type="Int32" not-null="true"></property>
<property name="Address" column="PersonAddress" type="string" not-null="true" length="255"></property>
</class>
</hibernate-mapping>
- assembly : 因為我是直接把 Person.hbm.xml 建立這個應用程式內,因此 assembly 的值填入專案名稱,若是類別庫專案,則用類別庫組件輸出的名稱。
- class :
- name : 對應使用此文件的類別命名空間 + 類別名稱。
- table : 實際對應用的資料表名稱。
- lazy : 是否啟用延遲
- id :
- name : 類別屬性名稱
- column : 資料表主索鍵欄位名或你想用來當索引鍵的欄位名。
- type : 型別,若是使用整數,要鍵入 Int32,而非 int。
- property :
- 相同的屬性設定請參考 id 。
- not-null : 是否允許 null 值。
- length : 欄位長度。
以上三個步驟可以建構出基本的 Mapping XML,在整份文件內還有許多好玩的設定,如 : 可以設定關連性、建立查詢式、.........等。
請各位前輩、看倌原諒小弟的懶惰,就沒有把整個 Mapping XML 解說的很詳細,在 Part II 的時候,會進行主要程式相關的設計及
撰寫做說明,也請各位前輩不吝指教。
===================
大家好 , 我叫芋宅宅
我很菜 , 請各位前輩指教