Я надеюсь создавать многих многим отношения с помощью NHibernate. Я не уверен, как отобразить их в XML-файлах. Я еще не создал классы, но они просто будут основным POCOs.
Человек
personId
имя:
Компетентность
competencyId
заголовок
Person_x_Competency
personId
competencyId
Я по существу создал бы Список в каждом ПОСТЕПЕННО для другого класса? Затем отобразите тех, которые так или иначе используют конфигурационные файлы NHibernate?
Вы можете поместить отношение «многие ко многим» к любому классу или даже к обоим. Это зависит от модели вашей предметной области. Если вы сопоставите его с обоими, один из них обратный.
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>
Делайте это двунаправленным, только если вам это действительно нужно.
Кстати: гораздо лучше сначала написать классы, а потом создать проект базы данных. База данных может быть экспортирована из файлов сопоставления. Это очень полезно.