2011-02-10 11 views
0

I持って、次の表NHibernateは三元関係マッピング

CREATE TABLE track 
ID 
name 

CREATE TABLE people 
ID 
firstname 

CREATE TABLE role 
ID 
name 

CREATE TABLE track_people_role 
track_id 
people_id 
role_id 

と次のマッピングファイル

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="App.Data.BusinessObjects" assembly="App.Data"> 
<class name="App.Data.BusinessObjects.Track, App.Data" table="track" lazy="true"> 
    <id name="Id" column="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="Name" column="name" /> 
</class> 

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="App.Data.BusinessObjects" assembly="App.Data"> 
<class name="App.Data.BusinessObjects.People, App.Data" table="people" lazy="true"> 
    <id name="Id" column="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="Firstname" column="firstname" /> 

</class> 

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="App.Data.BusinessObjects" assembly="App.Data"> 
<class name="App.Data.BusinessObjects.Role, App.Data" table="role" lazy="true"> 
    <id name="Id" column="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="Name" column="name" /> 
</class> 

track_people_roleテーブルのマッピングを設定しようとしています。誰も私を助けてくれますか?

私は以下の行を中間テーブルに持っています。主キーは、3つの列の組み合わせです。

 
track_id people_id role_id 
14292  1   1 
14292  1   2 


track_id people_id role_id 
1200  1   1 
1200  2   1 

答えて

1

すべての微妙な点を除いて、ここに実例があります。

クラス:

class Track 
{ 
    ... 
    public virtual IDictionary<People, Role> PeopleRoles { get; set; } 
} 

マッピング:それはそれは多くの仮定が含まれているよう

<class name="Track" ...> 
    ... 
    <map name="PeopleRoles" table="track_people_role"> 
    <key column="track_id"/> 
    <map-key-many-to-many column="people_id" class="People"/> 
    <many-to-many column="role_id" class="Role"/> 
    </map> 
</class> 

として、単純な...お気軽にお問い合わせください。

+0

Hi Diego、元の投稿を更新していくつかのサンプル行を追加します。あなたの解決策track.PeopleRolesだけが最初の行を返し、私が(14292,1,3)を保存しようとしたときに、「同じキーを持つ項目が既に追加されています」というエラーが表示される – Guray

+0

最初の行を返すことについてのコメントを無視してください行、私はまだ保存または更新する方法の助けが必要です – Guray

+0

保存[リンク](http://stackoverflow.com/questions/4973709/nhibernate-saving-a-dictionary-in-a-ternary-関係) – Guray