我必须使用除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")
答案 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");
这就是自我引用的样子。