Если у вас есть таблицы «Группы», «Пользователи», «Каналы» и между двумя таблицами ссылок, как вы организуете это в доменно-управляемом дизайне и nHibernate? Есть ли у группы UserCollection и ChannelCollection, пользователь - GroupCollection и ChannelCollection и канал - GroupCollection и UserCollection?
А если вы хотите добавить группу в канал, нужно ли сохранить канал со всеми его группами? Хуже того, добавление пользователя в канал ... сохранение всех пользователей канала требует сначала загрузить их всех, затем добавить нового пользователя и затем сохранить канал (хорошо, возможно, будет сохранен только добавленный пользователь, но вы нужно загрузить их всех ...). Или вы создадите метод в хранилище AddUserToChannel (пользователь, канал канала) или AddUserToChannel (пользователь, int channelId)?