【发布时间】:2026-02-05 23:00:02
【问题描述】:
我想知道如何使用 NHibernate 映射以下内容:我有一个 User 类、一个 Preference 类和一个 PreferenceOption 类。
用户有许多偏好(这些偏好又具有偏好选项)。系统的工作方式是为所有用户提供一组默认的首选项,单个用户可以通过指定自己的默认值来覆盖这些默认值。这样我们只需要存储系统默认值(由 Preference 和 PreferenceOption 表/类表示)和用户的任何特定默认值(由 UserPreferenceOption 表/类表示)。
理想情况下,我想做的是映射 PreferenceOption 类,以便它在 UserPreferenceOption 上执行左外连接以包含用户的特定默认值如果存在。请记住,用户可能没有覆盖系统默认值。
偏好
标识 |名称
PreferenceOption
标识 |价值 |是默认值 | Preference_id
用户偏好选项
标识 |使用这个 | Preference_id |选项ID |用户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 映射它?
【问题讨论】:
标签: nhibernate join conditional