在流畅的nhibernate中在同一个表中自引用

时间:2014-03-10 16:42:44

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我必须使用除CompanyId之外的列将公司映射到其自己的parentCompany,而该列是我无法为其编写映射配置的唯一标识符。

      public class Company
     {
     public virtual int CompanyId { get; set; }
    public virtual string CompanyName { get; set; }
    public virtual string AddressLine1 { get; set; }
    public virtual string AddressLine2 { get; set; }
    public virtual string State { get; set; }
    public virtual State StateRef { get; set; }
    public virtual long? DUNS { get; set; }
    public virtual long? DUNSUltimateParent { get; set; }
    public virtual Company UltimateParentCompany { get; set; }
    }

对于特定公司,DUNS编号是唯一的,但主键是CompanyId。并且相应的UltimateParentCompany应该通过DUNSUltimateParent列映射到DUNS列。 希望我很清楚。

我已经提出了下面的映射,因为它正在搜索companyId而不是在DUNS中。

  References(x => x.UltimateParentCompany).Column("DUNSUltimateParent")

1 个答案:

答案 0 :(得分:0)

试试这个:

public class Company
     {
    public virtual int CompanyId { get; set; }
    public virtual Company Parent{ get; set; }
    public virtual IList<Company>Children{get;set}
    }

References(x => x.Parent, "ParentId").Nullable();
            HasMany(x => x.Children).Cascade.SaveUpdate().KeyColumn("ParentId");

这就是自我引用的样子。