Помогите мне перевести это на правильный NHibernate ...
У меня есть база данных Oracle с 2 таблицами:
Employees:
Id (unique id)
FirstName (string)
LastName (string)
Location (string)
Locations:
Name (string)
Address (string)
Как видите, таблица Employees имеет уникальный идентификатор, но таблица Locations вообще не имеет идентификатора. Поле Имя является обычным и не уникальным.
В Oracle SQL я могу выполнить следующий запрос:
SELECT *
FROM Employees e
LEFT OUTER JOIN Locations l
ON e.Location = l.Name
WHERE e.Id = 42
Местоположение, в котором находится сотрудник 42, имеет 2 строки в таблице Locations, поэтому этот запрос возвращает 2 строки, по одной для каждого местоположения, найденного для сотрудника 42.
Ну, я не могу понять, как перевести это в запрос сопоставления NHibernate + (я использую Fluent NHibernate). Я склонен думать, что мне следует сопоставить Employees.Location как ссылку на Locations.Name, и поэтому при выполнении HQL-запроса он должен возвращать 2 объекта, но NHibernate не позволил бы мне получить список из ссылки. Поэтому я попробовал HasMany, но он тоже не работает, потому что NHibernate хочет, чтобы в Locations было поле, ссылающееся на Employees, что в некотором роде имеет смысл.
Мой HQL-запрос выглядит так:
select e
from Employees e
left join e.Locations l
where e.SGId like :sgId
Почему я могу сделать это в обычном SQL, а не в NHibernate?
Спасибо.