Картографирование тройных отношений NHibernate - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть следующие таблицы

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 Ответ

1 голос
/ 10 февраля 2011

Пропустив все тонкости, вот рабочий пример.

Класс:

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>

Как бы просто оно ни было, оно содержит многопредположения ... не стесняйтесь спрашивать.

...