Свободный Nhibernate отображает свойство из другой таблицы - PullRequest
2 голосов
/ 21 апреля 2009

У меня проблема с сопоставлением столбца в таблице A со свойством класса, которое в первую очередь сопоставлено с таблицей B. Это лучше объясняется в следующем:

Существует класс CustomerRisk, который имеет свойства Risk и CustomerNumber.

В базе данных она состоит из двух таблиц: Customer, в которой есть столбец CustomerNumber, и CustomerRisk, который имеет внешний ключ для Customer, и одна для Risk.

Отображение риска не сложно, но проблема заключается в отображении CustomerNumber. Возможно ли это сделать без создания класса Customer *? Чтобы NHibernate присоединился к классу Customer для выбора CustomerNumber:

select cn.CustomerNumber, r.Description
from CustomerRisk cr
    inner join Customer c on c.CustomerID = cr.CustomerID
    inner join Risk r on r.RiskID = cr.RiskID

Конечно, несколько записей CustomerRisk могут иметь один и тот же CustomerID.

Надеюсь, это немного ясно, спасибо большое.

  • Я знаю, что обычно вам нужен класс клиента, но я «анонимизировал» классы.

1 Ответ

0 голосов
/ 21 апреля 2009

При работе с NHibernate нужно помнить, что он имеет дело с сущностями и знает только то, что вы ему сказали (через файлы сопоставления). HQL - это объектно-ориентированная версия SQL, поэтому вы не можете использовать ее для доступа к полям, которые не являются частью модели вашего сопоставленного домена.

Тем не менее, вы все равно можете выполнять простой старый SQL через сеанс NHibernate, который на самом деле является единственным способом доступа к данным, которые вы не отобразили в своем ORM. Возможно, существует упрощенное решение для картографии (хотя я не могу сказать, не видя вашу модель данных), но если вы против полного отображения «Клиента», я думаю, что SQL - ваш лучший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...