1

Car、Bike、Skateboard オブジェクトと Person オブジェクトの間にこの関係があります。関係は Ownership テーブルに格納されます。

車、バイク、スケボー マップを人に

NHibernate でこのマッピングを作成するにはどうすればよいですか? このチュートリアルに従おうとしています: http://nhibernate.info/doc/nh/en/index.html#inheritance。どんな助けでも大歓迎です。

4

2 に答える 2

0

これはオプションで、階層ごとにテーブルがあります。私が想定し :

  • 所有権は独自の ID を保持します ( OwnerShipId、自動生成)
  • 参照されるクラス/テーブル ( BikeId, CarId) ごとに列があり、さまざまなキーの種類と外部キーを処理できます

マッピングは次のようになります。

<class lazy="false"  name="Domain.OwnerShip, Domain" table="OwnerShip_Table" discriminator-value="0">
<id name="Id" column="OwnerShipId" type="System.Int32" access="property">
    <generator class="identity"></generator>
</id>
    <discriminator column="VehicleTypeCode" type="int"/>
    <many-to-one name="Owner" column="PersonId" not-null="true" fetch="..."/>
    <many-to-one name="CodeType" column="VehicleTypeCode" not-null="true" fetch="..." />
<subclass name="Domain.BikeOwnerShip, Domain" discriminator-value="1">
        <many-to-one name="Bike" column="BikeId" not-null="true" fetch="..."/>
   </subclass>
<subclass name="Domain.CarOwnerShip, Domain" discriminator-value="2">
        <many-to-one name="Car" column="CarId" not-null="true" fetch="..."/>
   </subclass>
</class>

OwnedObject基本クラスに、マッピングされていない仮想プロパティがあると便利だと思います。

public virtual Object OwnedObject{ 
                                 get{return null;}
}

クラスではCarOwnership、OwnedObject 実装は次のようになります。

public override Object OwnedObject{ 
                                 get{return this.Car;}
}

これが役立つことを願っています

于 2013-04-03T12:10:10.830 に答える