找回密码
 立即注册
首页 业界区 业界 NHibernate实例分享:Northwind Mapping

NHibernate实例分享:Northwind Mapping

窟聿湎 2025-5-29 20:02:55
NHibernate实例分享:Northwind Mapping

本节内容
           
  • 说明       
  • 代码       
  • 参考资料
说明

NHibernate的强大之处在于其映射,我们在设计Domain中,经常为各种各样的映射感到头痛,为此我把微软SQL Server2000自带的Northwind数据库使用NHibernate映射了一下,需要的请下载其代码,在文章中就不仔细说明了,一切都在代码中。
顺便说一句,其实映射不必这么复杂的写出全部:
  1. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  2.    <class name="YourApp.Common.DataObjects.Address, YourApp"
  3.           table="Address">
  4.        <id name="Id" type="Int32" unsaved-value="null">
  5.            <column name="Id"
  6.                    length="4" sql-type="int"
  7.                    not-null="true" unique="true" index="PK_Address"/>
  8.            <generator class="native" />
  9.        </id>
  10.        <property name="Address1" type="String">
  11.            <column name="Address1" length="255"
  12.                    sql-type="varchar" not-null="true"/>
  13.        </property>
  14.        <property name="Address2" type="String">
  15.            <column name="Address2" length="255"
  16.                    sql-type="varchar" not-null="false"/>
  17.        </property>
  18.        <property name="City" type="String">
  19.            <column name="City" length="255"
  20.                    sql-type="varchar" not-null="true"/>
  21.        </property>
  22.        <property name="State" type="String">
  23.            <column name="`State`" length="2"
  24.                    sql-type="varchar" not-null="true"/>
  25.        </property>
  26.        <property name="Zip" type="String">
  27.            <column name="Zip" length="12"
  28.                    sql-type="varchar" not-null="true"/>
  29.        </property>
  30.        <many-to-one name="Contact" class="YourApp.Common.DataObjects.Contact, YourApp">
  31.            <column name="Contact_Id" length="4"
  32.                    sql-type="int" not-null="false"/>
  33.        </many-to-one>
  34.        <bag name="BillToOrderHeaders" inverse="true" lazy="true" cascade="all-delete-orphan">
  35.            <key column="BillToAddress_Id"/>
  36.            <one-to-many
  37.                class="YourApp.Common.DataObjects.OrderHeader, YourApp"/>
  38.        </bag>
  39.        <bag name="ShipToOrderHeaders" inverse="true" lazy="true" cascade="all-delete-orphan">
  40.            <key column="ShipToAddress_Id"/>
  41.            <one-to-many
  42.                class="YourApp.Common.DataObjects.OrderHeader, YourApp"/>
  43.        </bag>
  44.    </class>
  45. </hibernate-mapping>
复制代码
其实这样就可以了,不要把默认的都写上去的,我这个例子映射写的最简洁,大家下载看看吧
  1. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
  2.                   assembly="YourApp"
  3.                   namespace="YourApp.Common.DataObjects">
  4.   
  5.    <class name="Address">
  6.        <id name="Id">
  7.            <generator class="native" />
  8.        </id>
  9.        <property name="Address1" not-null="true" />
  10.        <property name="Address2"/>
  11.        <property name="City" not-null="true"/>
  12.        <property name="State" length="2" not-null="true"/>
  13.        <property name="Zip" length="12" not-null="true"/>
  14.        <many-to-one name="Contact" column="Contact_Id"/>
  15.        <bag name="BillToOrderHeaders" inverse="true" cascade="all-delete-orphan">
  16.            <key column="BillToAddress_Id"/>
  17.            <one-to-many class="OrderHeader"/>
  18.        </bag>
  19.        <bag name="ShipToOrderHeaders" inverse="true" cascade="all-delete-orphan">
  20.            <key column="ShipToAddress_Id"/>
  21.            <one-to-many class="OrderHeader"/>
  22.        </bag>
  23.    </class>
  24. </hibernate-mapping>
复制代码
代码

下载地址:http://code.google.com/p/yjinglee/downloads/list
参考资料

Microsoft:Northwind and pubs Sample Databases for SQL Server 2000

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册