2011-02-10 3 views
0

У меня есть следующие таблицы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. Может ли кто-нибудь помочь мне, пожалуйста?

У меня есть строки ниже в промежуточной таблице. Первичный ключ - это комбинация из трех столбцов.

 
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; } 
} 

Mapping:

<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

Привет, Диего, я обновляю свое оригинальное сообщение, чтобы включить некоторые образцы строк. С вашим решением track.PeopleRoles только вернул первую строку, и когда я попытался сохранить (14292,1,3), я получил сообщение «Один элемент с тем же ключом уже добавлен» error – Guray

+0

, пожалуйста, не обращайте внимания на мой комментарий о возврате только первого строка, хотя мне все еще нужна помощь по сохранению или обновлению. – Guray

+0

Открыт новый для сохранения [ссылка] (http://stackoverflow.com/questions/4973709/nhibernate-saving-a-dictionary-in-a-ternary- связь) – Guray

Смежные вопросы