Я должен был поделиться окончательным решением - должно помочь любому, кто пытается заставить NH загрузить отношения, которые не указаны в БД.
Я уже создавал подклассы человека, а NHibernate достаточно умен.чтобы распознать Администратора: Person и создать его в качестве Администратора (где у Администратора есть таблица с PK / FK PersonId)
Я только что добавил новое переопределение сопоставления для Администратора ...
mapping.HasManyToMany(x => x.Widgets)
.Table("AdministratorWidgetAccess")
.Cascade.None();
И я добавил представление с именем AdministratorWidgetAccess ...
SELECT a.PersonId as [AdministratorId], w.WidgetId as
FROM dbo.Administrator AS a LEFT OUTER JOIN
dbo.Widget AS w ON 1 = 1
Во время работы, если человек является администратором, он загружает все виджеты на основе отношений в представлении, в противном случае он загружает виджеты на основестол соединения.