MVC Note (4) In NHibernate Part 1. Create Mapping XML

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,不過在學習期間還是自己慢慢刻比較好,等到熟悉了,較上手了再偷懶用工具來產生好了。

 

接下來講實作的過程,這次我用一個類通訊錄的範例來講解:

NHibernate Forge

現在官方釋放出來的版本為 2.1.2,想要嘗鮮的人也可以下載 3.0.0 alpha 3 來試用,如果還想嘗試其他的,就比較建議使用 2.1.2 的版本。下載後為一個壓縮檔,幾乎可以說是一個套件包了,其中的 nhibernate-configuration.xsdnhibernate-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 專案

建立ASP.NET MVC 2 Web 應用程式

 

  • Step 3 : 在 Models 資料夾內建一個 Person.hbm.xml 的文件 (一定要打hbm喔)。
    1. 在結構描述選擇 nhibernate-mapping.xsd ,如下圖 (小提示 : 在編輯區的空白處點一下,可以看到屬性項目會變動,然後就看到結構描述的屬性)

XML結構描述設定

    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 的時候,會進行主要程式相關的設計及

撰寫做說明,也請各位前輩不吝指教。

===================

大家好  , 我叫芋宅宅

我很菜 , 請各位前輩指教