2008-11-25 84 views
5

我有一個遺留數據庫,我正在嘗試創建一個NHibernate DAL。 我在多對多表上映射時遇到問題。NHibernate多對多

數據庫表:

  • studio_Subscribers
  • studio_Groups(包含訂戶的IList的)
  • studio_Subscribers_Groups - 許多一對多與主鍵

表中的問題是,當我創建了一個SubscriberGroup實例並將其填入訂閱者,它們被保存到studio_Subscribers表中,但沒有t到多對多表。

我無法弄清楚什麼是錯的?

studio_Subscribers表映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
    assembly="Meridix.Studio.Common" 
    namespace="Meridix.Studio.Common"> 
    <class name="SubscriberItem" table="studio_Subscribers"> 
     <id name="StorageId" column="Id" unsaved-value="0" access="nosetter.camelcase"> 
      <generator class="identity" /> 
     </id> 
     <property name="Id" column="DomainId" not-null="true" /> 
     <property name="Subscriber" column="Subscriber" not-null="true" length="50" /> 
     <property name="Description" column="Description" not-null="false" length="100" /> 
     <property name="Type" column="Type" not-null="true" length="40" 
      type="Meridix.Studio.Data.Repositories.EnumStringTypes.SubscriberTypeEst, Meridix.Studio.Data.Repositories" /> 
    </class> 
</hibernate-mapping> 

studio_Groups表映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
    assembly="Meridix.Studio.Common" 
    namespace="Meridix.Studio.Common"> 
    <class name="SubscriberGroup" table="studio_Groups"> 
     <id name="StorageId" column="Id" unsaved-value="0" access="nosetter.camelcase"> 
      <generator class="identity" /> 
     </id> 
     <property name="Id" column="DomainId" not-null="true" /> 
     <property name="Name" column="Name" not-null="true" length="200" /> 
     <property name="Description" column="Description" not-null="false" length="300" /> 

     <bag name="Subscribers" table="studio_Groups_Subscribers" access="nosetter.camelcase"> 
      <key column="GroupId"></key> 
      <many-to-many column="SubscriberId" class="SubscriberItem" /> 
     </bag> 
    </class> 
</hibernate-mapping> 

回答

2

不該你有你的用戶藏漢合適的袋子有許多一對多關係到該組?

<bag name="Groups" table="studio_Groups_Subscribers" access="nosetter.camelcase"> 
     <key column="SubscriberId"></key> 
     <many-to-many column="GroupId" class="GroupItem" /> 
</bag> 

,也許有一個級聯=「保存更新」您SubscriberItems集合,使節能集團將與「對方」適當的關係更新你的孩子。

+0

jishi:你救了我。謝謝。其餘的:確保你有兩個類相互引用,定義兩邊的行李(確保一個是反面的,一個不是)。不要忘記在runtinme中設置引用:a.bList.Add(b); b.aList.Add(一); – Nils 2010-05-16 11:45:02