Вот настройки.
NHibernate, Fluent NHibenrate и Nhibernate Linq
Включены следующие объекты:
- Fault - запись ошибки, происходящей
- Тревога - информация о неисправности, воспринимайте ее как тип неисправности (список всех возможных неисправностей, которые могут возникнуть)
- AlarmDescription - описание, читаемое человеком, по одному для каждого языка
Ошибка имеет сигнал тревоги, а сигнал тревоги содержит набор описаний, по одному для каждого языка в системе.
На сигнал тревоги могут ссылаться многие неисправности.
Когда пользователь ищет один из параметров, он может искать (и упорядочивать) неисправности по его описанию.Это означает передачу конкретного языка для использования.
SQL, который нужно выполнить, - это просто умственно начать:
SELECT f.*, a.*, d.Description
FROM Fault f
JOIN Alarm a ON f.Alarm_id = a.Id
JOIN AlarmDescription d ON a.Id = d.Alarm_id AND d.Language = @lang
Приведенный выше запрос даст мне всю ошибку, их тревогу иописания для выбранного языка.
Однако получить Nhibernate для генерации такого запроса довольно сложно.
Таким образом, он сводится к одному из фильтров, являющемуся дочерней коллекцией дочернего объекта основного объекта.,Я пытался заставить это работать с Linq2Nhibenrate, HQL и пытался заставить работать Native SQL.Native SQL кажется наиболее успешным, но я не могу понять, как заставить псевдонимы отображаться правильно.Я за любое решение, включая изменение модели предметной области.Этот поставил меня в тупик.