Не совсем уверен, что это идеальное решение для этой ситуации, но это исправило проблему для меня, когда я столкнулся с той же проблемой при работе на старой БД с составными ключами.
Установив not-found, чтобы игнорировать в ваших ссылках, NHibernate будет обрабатывать пустые объекты как пустые вместо исключений. При использовании этого метода NHibernate выполнит отдельный запрос, поэтому возможны небольшие потери производительности, так как это в основном требует загрузки объекта.
Вы можете просто попытаться загрузить объект, вместо того чтобы использовать эту технику, но у меня есть ощущение, что он вернет исключение, как если бы он ожидал объект (не ноль). Я бы предложил опубликовать вопрос на форумах NHibernate, если это не сработает, поскольку я определенно не являюсь экспертом в этой области, но для вас это может быть меньшая / менее уродливая работа.
Например:
<many-to-one name="Node" class="Node" not-found="ignore">
<column name="NodeID"/>
<column name="VersionID" />
</many-to-one>
Надеюсь, это поможет,
Jay