日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NHibernate Step By Step(2)-继承映射

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NHibernate Step By Step(2)-继承映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分三種

1.單表繼承

既然是單表繼承就需要一個鍵值來標識類別

  • class以discriminator-value來標識類別
  • discriminator 用以表示鑒別器的表字段
  • 繼承的類以subclass來標識
  • 以extends來標識繼承的類

  • (1)父類

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> <class name="NHibernate.Test.Subclass.SubclassBase, NHibernate.Test" table="one_tab" discriminator-value="SUPER" > <id name="Id" type="Int32" unsaved-value="0" column="joined_subclass_id" access="nosetter.camelcase-underscore" > <generator class="native" /> </id> <discriminator column="disc_column" type="String" /> <property name="TestLong" column="test_long" type="Int64" /> <property name="TestString" column="test_string" type="String" /> <property name="TestDateTime" column="test_date_time" type="DateTime" /> </class> </hibernate-mapping>
    (2)子類

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> <subclass extends="NHibernate.Test.Subclass.SubclassBase, NHibernate.Test" name="NHibernate.Test.Subclass.SubclassOne, NHibernate.Test" discriminator-value="SUB" > <property name="OneTestLong" column="one_test_long" type="Int64" /> </subclass> </hibernate-mapping>


    (3)生成的數據庫測試數據

    看圖更能理解意圖

    2.鑒別器

    這里看一下鑒別器的使用,可以指定鑒別器的值,以辨別不同的類,如下:

    多個類映射到同張表,Foo 類以Green標識,Baz 則具備了Color 屬性,Foo可以說是Baz的特殊類別,都是通過配置文件來實現

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false" namespace="NHibernate.Test.Subclass.EnumDiscriminator" assembly="NHibernate.Test"> <class name="Foo" table="subclass_enumdiscriminator" discriminator-value="Green"> <id name="Id" type="Int64"> <generator class="assigned"/> </id> <discriminator column="Color" type="NHibernate.Test.Subclass.EnumDiscriminator.Colors, NHibernate.Test"/> <subclass name="Bar" discriminator-value="Blue"/> </class> <class name="Baz" table="subclass_enumdiscriminator"> <id name="Id" type="Int64"> <generator class="assigned"/> </id> <property name="Color"/> </class> </hibernate-mapping>
    測試數據

    3.每個子類一張表(具備與父類有關聯關系的)

    映射文件

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> <class name="NHibernate.Test.JoinedSubclass.Person, NHibernate.Test" table="person" proxy="NHibernate.Test.JoinedSubclass.Person, NHibernate.Test"> <id name="Id" type="Int32" unsaved-value="0" column="person_id" access="nosetter.camelcase-underscore"> <generator class="native"/> </id> <property name="Name" column="name"/> <property name="Sex" column="sex"/> <component name="Address"> <property name="Street"/> <property name="Zip"/> <property name="Country"/> </component> <joined-subclass name="NHibernate.Test.JoinedSubclass.Employee, NHibernate.Test" table="empl" proxy="NHibernate.Test.JoinedSubclass.Employee, NHibernate.Test"> <key column="person_id"/> <property name="Title" not-null="true" length="20"/> <property name="Salary" type="Decimal(19,5)"/> <many-to-one name="Manager"/> </joined-subclass> <joined-subclass name="NHibernate.Test.JoinedSubclass.Customer, NHibernate.Test" table="cust" proxy="NHibernate.Test.JoinedSubclass.Customer, NHibernate.Test"> <key column="person_id"/> <property name="Comments"/> <many-to-one name="Salesperson"/> </joined-subclass> </class> </hibernate-mapping>

    生成表結構

    ?

    4.無關聯關系的繼承表

    即每張表都會生成父類的字段

    <class name="Person" table="UPerson"> <id name="id" column="person_id" unsaved-value="0"> <generator class="hilo"/> </id> <property name="name" unique-key="NameUniqueKey" not-null="true" length="80"/> <property name="sex" not-null="true" update="false"/> <component name="address"> <property name="address" index="AddressIndex"/> <property name="zip" index="AddressIndex"/> <property name="country"/> </component> <union-subclass name="Employee" table="UEmployee"> <property name="title" not-null="true" length="20"/> <property name="salary" /> <many-to-one name="manager"/> </union-subclass> <union-subclass name="Customer" table="UCustomer"> <property name="comments"/> <many-to-one name="salesperson"/> </union-subclass> </class>
    數據庫表結構

    轉載于:https://www.cnblogs.com/Clingingboy/archive/2009/08/02/1536971.html

    總結

    以上是生活随笔為你收集整理的NHibernate Step By Step(2)-继承映射的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。