Мне интересно, как я могу отобразить следующее с помощью NHibernate: у меня есть класс User, класс Preference и класс PreferenceOption.
Пользователь имеет много предпочтений (которые, в свою очередь, имеют параметры предпочтений). Система работает так, что для всех пользователей существует набор параметров по умолчанию, и отдельный пользователь может переопределить эти значения по умолчанию, указав свои собственные значения по умолчанию. Таким образом, нам нужно только сохранить системные значения по умолчанию (представленные в таблицах / классах Preference и PreferenceOption) и любые конкретные значения по умолчанию для пользователя (представленные в таблице / классе UserPreferenceOption).
В идеале я хотел бы сопоставить класс PreferenceOption так, чтобы он выполнял левое внешнее соединение с UserPreferenceOption, чтобы включить определенные по умолчанию значения пользователя , если он присутствует . Помните, что пользователь не может переопределить системное значение по умолчанию.
1012 * Предпочтительны *
Id | Имя
PreferenceOption
Id | Значение | IsDefault | Preference_id
UserPreferenceOption
Id | UseThis | Preference_id | Option_id | User_id
SQL-запрос будет выглядеть примерно так:
select PO.Id, PO.Value, PO.IsDefault, PO.Preference_Id, UPO.UseThis
from PreferenceOption PO Left Outer Join UserPreferenceOverride UPO on PO.Id = UPO.Option_id
and UPO.Profile_id = THE_USER_ID
Можно ли сопоставить это с NHibernate?