many-many, отображающийся в NHibernate

Я надеюсь создавать многих многим отношения с помощью NHibernate. Я не уверен, как отобразить их в XML-файлах. Я еще не создал классы, но они просто будут основным POCOs.

Таблицы

Человек
personId
имя:

Компетентность
competencyId
заголовок

Person_x_Competency
personId
competencyId

Я по существу создал бы Список в каждом ПОСТЕПЕННО для другого класса? Затем отобразите тех, которые так или иначе используют конфигурационные файлы NHibernate?

8
задан Chris Stewart 27 April 2010 в 14:27
поделиться

1 ответ

Вы можете поместить отношение «многие ко многим» к любому классу или даже к обоим. Это зависит от модели вашей предметной области. Если вы сопоставите его с обоими, один из них обратный.

class Person
{
  // id ...
  IList<Competency> Competencies { get; private set; }

  // you domain model is responsible to manage bidirectional dependencies.
  // of course this is not a complete implementation
  public void AddCompetency(Competency competency)
  {
    Competencies.Add(competency);
    competency.AddPerson(this);
  }
}

class Competency
{
  // id ...
  IList<Person> Persons { get; private set; }
}

Отображение:

<class name="Person">
  <id ....>
  <bag name="Competencies" table="Person_x_Competency">
    <key column="personId"/>
    <many-to-many class="Competency" column="competencyId"/>
  </bag>
</class>

<class name="Competency">
  <id ....>
  <bag name="Persons" table="Person_x_Competency" inverse="true">
    <key column="competencyId"/>
    <many-to-many class="Person" column="personId"/>
  </bag>
</class>

Делайте это двунаправленным, только если вам это действительно нужно.

Кстати: гораздо лучше сначала написать классы, а потом создать проект базы данных. База данных может быть экспортирована из файлов сопоставления. Это очень полезно.

23
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: