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