2011-05-31 51 views
0

我被困在試圖讓我想要正確保存的映射。對於我的例子,我有一個ItemY類,它可以有0,1,* Assets。但是,資產可以屬於ItemY或ItemZ對象。我試圖使用交叉引用表來存儲這個。NHibernate與XRef表的單向關聯

模式

TABLE [dbo].[ItemY](
    [ItemYID] [int] IDENTITY(1,1) NOT NULL, 
    --more columns here 

TABLE [dbo].[Asset](
    [AssetID] [uniqueidentifier] NOT NULL, 
    [AssetTypeID] [int] NOT NULL, 
    [DisplayOrder] [int] NOT NULL, 
    [Location] [varchar](255) NOT NULL, 

TABLE [dbo].[ItemYAsset](
    [ItemYID] [int] NOT NULL, 
    [AssetID] [uniqueidentifier] NOT NULL, 

映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="My.Namespace"> 
<class name="ItemY" table="ItemY"> 
    <id name="ItemYId" column="ItemYID"> 
     <generator class="identity" /> 
    </id> 
    <bag name="Images" table="ItemYAsset" inverse="true" cascade="all-delete-orphan"> 
     <key column="ItemYID" not-null="true" /> 
     <many-to-many class="Asset" column="AssetID" unique="true" /> 
    </bag> 
    <!--more mapping here--> 
</class> 

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="My.Namespace"> 
    <class name="Asset" table="Asset"> 
     <id name="AssetId" column="AssetID"> 
      <generator class="guid.comb" /> 
     </id> 
     <property name="DisplayOrder"></property> 
     <property name="Location"></property> 
    </class> 
</hibernate-mapping> 

我不希望暴露在資產的ItemY的性質,因爲一個資產沒有按」 t總是屬於一個Ite我的。我的ItemY類保持正常,並且還保留了Asset類,但沒有任何內容添加到關聯表(ItemYAsset)中。任何想法我做錯了什麼?

回答

1

inverse="true"意味着「對方」負責堅持關係。

由於您沒有「其他方面」(關係是單向的),請刪除該屬性。

+0

這樣做,謝謝! – RobertMGlynn 2011-05-31 18:07:43