У меня тоже есть эта проблема, и, к сожалению, я думаю, что это из-за дизайна. Поставщик NHibernate 3.0 Linq использует HQL под прикрытием, и HQL не учитывает ваши отображения в этом отношении. Например, если вы сделали
session.CreateQuery ("из профиля"). List ()
Вы получите только список всех профилей, и ваш пользовательский класс не будет присоединен, даже если ваше отображение имеет external-join = true.
Если вы использовали старый поставщик NHibernate.Linq, который использовал API Critera или API Criteria напрямую:
session.CreateCriteria (). Список ()
вы получите список всех профилей, оставленных внешними, соединенными с пользователями, так же, как запрошен файл сопоставления.
Теперь я не знаю, почему провайдер linq, поддерживаемый HQL, не учитывает ваши отображения (и если кто-то знает способ обойти это, пожалуйста, напишите), но я считаю, что именно поэтому вы наблюдаете такое поведение.