ManyToOne()在自定义列上具有内部联接

时间:2013-12-05 12:50:09

标签: nhibernate nhibernate-mapping mapping-by-code

有没有办法使用自定义列映射属性数据库列,这不是FK,只是一个候选键(它对表是唯一的)?

如果没有,我的选择是什么? (需要使用联接表限制来限制select结果)

1 个答案:

答案 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");

无论如何,这不是理想的,应该主要用于解决遗留的东西。