Мы делаем что-то похожее на это, и способ его отображения заключается в том, что зависимые события должны иметь столбец, который сопоставляется с родительским событием. Это создает необходимые родительские и дочерние отношения, которые вам необходимы для того, чтобы отображение было действительным и предотвращало какую-то циклическую ссылку. Мы перешли на NH 3.2 с помощью сопоставления кода, поэтому мой беглый может быть немного дрянным, но вот мое лучшее предположение:
public class EventMap : ClassMap<Event>
{
public EventMap()
{
//the normal ID and property stuff
References(x => x.ParentEvent).Column("ParentEventId");
HasMany(x => x.Dependencies).KeyColumn("ParentEventId");
}
}
Edit:
Извините - не видел, что вы хотели HasManyToMany. Это может выглядеть примерно так:
public class EventMap : ClassMap<Event>
{
public EventMap()
{
//the normal ID and property stuff
HasManyToMany(x => x.Dependencies).Table("EventDependentEvent").AsBag();
}
}
Это должно отобразить таблицу ссылок, которая вам понадобится. Вам нужно будет защититься от некоторой степени «округлости», то есть убедиться в том, что в вашей бизнес-логике вы не можете создать цикл или какую-то проблему с массивной зависимостью графов объектов.