有没有办法使用自定义列映射属性数据库列,这不是FK,只是一个候选键(它对表是唯一的)?
如果没有,我的选择是什么? (需要使用联接表限制来限制select
结果)
答案 0 :(得分:1)
NHibernate支持名为property-ref
的功能。这里记录了:5.1.10. many-to-one。一些提取物:
property-ref
属性仅应用于映射旧数据 其中外键引用关联表的唯一键 主键以外的。这是一个丑陋的关系模型。对于 例如,假设Product类具有唯一的序列号,即 不是主键。 (unique属性控制NHibernate的DDL 使用SchemaExport工具生成。)
因此,如果子表包含例如Guid
,它与目标父表中的相同...这可以解决问题。示例映射:
<many-to-one name="Parent" property-ref="ParentGuid" column="THE_GUID_COLUMN"/>
使用流畅的语法,它可能如下所示:
References(x => x.Parent)
...
.PropertyRef("ParentGuid")
.Column("THE_GUID_COLUMN");
无论如何,这不是理想的,应该主要用于解决遗留的东西。