Мне кажется, что это больше вопрос, как правильно моделировать домен, а не проблема отображения NHibernate.
Как только вы разберетесь в моделировании вашего домена, я думаю, вы обнаружите, что отображение NHibernate относительно легко выпадает.
Единственное место, где можно получить представление о моделировании ролей, это поискать " Color Modeling " - Джефф де Лука имеет некоторые ресурсы Хотя идея возникла с Питер Коад
Основная идея состоит в том, чтобы отделить личность участника от роли, которую они играют в деятельности.
Например, у вас может быть объект Person, который фиксирует личность конкретного человека.
Затем создается совершенно отдельный объект «Студент», в котором фиксируется дополнительная информация для записи зачисления человека в качестве студента. Каждый экземпляр Student должен иметь ссылку на зарегистрированного человека. Один человек может быть связан со многими записями «Студента», по одному на каждую отдельную запись.
Параллельно у вас может быть отдельный объект типа «Репетитор», который записывает детали трудоустройства, когда кто-то нанимается для обучения студентов в ситуациях один на один. Объект Tutor фиксирует дополнительную информацию о том, как кто-то работает в качестве наставника.
Эта структура дает вам большую гибкость - один человек (Джо Блоггс) может быть просто студентом, другой человек (Джейн Доу) может быть просто репетитором, а третий (Чак Норрис) может быть обоим.
Кроме того, введение другой роли (лектор, маркер, администратор) упрощается, поскольку для добавления не требуется вносить изменения в существующие объекты.