FluentNHibernate多对一引用,其中外键不是主键,列名不同

FluentNHibernate多对一引用,其中外键不是主键,列名不同,nhibernate,orm,fluent-nhibernate,Nhibernate,Orm,Fluent Nhibernate,我在这里坐了一个小时想弄明白 我有两张桌子(缩写): 我有两个类基本上反映了这些: public class Trust { public virtual int Id {get; set;} public virtual string AccountNumber { get; set; } } public class AccountHistory { public virtual int Id { get; set; } public virtual Tr

我在这里坐了一个小时想弄明白

我有两张桌子(缩写):

我有两个类基本上反映了这些:

public class Trust
{
    public virtual int Id {get; set;}
    public virtual string AccountNumber { get; set; }

}

public class AccountHistory
{
    public virtual int Id { get; set; }
    public virtual Trust Trust {get; set;}
    public virtual DateTime PostingDate { get; set; }
    public virtual decimal IncomeAmount { get; set; }
}

如何在FluentNHibernate中进行多对一映射,以使AccountHistory具有信任?具体来说,由于它与TRUSTID的信任主键在不同的列上相关,并且它所引用的列的名称也不同(ACCTNBR vs.ACCOUNTNUMBER)????以下是我到目前为止所拥有的-我如何在AccountHistoryMap上引用信任

public class TrustMap : ClassMap<Trust>
{
    public TrustMap()
    {
        Table("TRUST");
        Id(x => x.Id).Column("TRUSTID");
        Map(x => x.AccountNumber).Column("ACCTNBR");
    }
}

public class AccountHistoryMap : ClassMap<AccountHistory>
{
    public AccountHistoryMap()
    {
        Table("TRUSTACCTGHISTORY");
        Id (x=>x.Id).Column("ID");
        References<Trust>(x => x.Trust).Column("ACCOUNTNUMBER").ForeignKey("ACCTNBR").Fetch.Join();
        Map(x => x.PostingDate).Column("POSTINGDATE");
        );
公共类信任映射:类映射
{
公共信任图()
{
表(“信托”);
Id(x=>x.Id).列(“信任Id”);
映射(x=>x.AccountNumber).Column(“ACCTNBR”);
}
}
公共类AccountHistoryMap:ClassMap
{
公共帐户历史地图()
{
表(“信托账户历史”);
Id(x=>x.Id)。列(“Id”);
引用(x=>x.Trust).Column(“ACCOUNTNUMBER”).ForeignKey(“ACCTNBR”).Fetch.Join();
映射(x=>x.PostingDate)。列(“PostingDate”);
);
我尝试了上面几行的一些不同变体,但没有任何效果-它会回调AccountHistory数据和信任的代理;但是它表示没有具有给定标识符的信任行

这必须很简单,有人吗

提前感谢。

您需要使用:

公共类AccountHistoryMap:ClassMap
{
公共帐户历史地图()
{
表(“信托账户历史”);
Id(x=>x.Id)。列(“Id”);
引用(x=>x.Trust,“ACCOUNTNUMBER”).PropertyRef(“ACCTNBR”).Fetch.Join();
映射(x=>x.PostingDate)。列(“PostingDate”);
}
}

谢谢你,先生,你救了我的命:)如果答案对你有帮助,你为什么不接受呢?
public class TrustMap : ClassMap<Trust>
{
    public TrustMap()
    {
        Table("TRUST");
        Id(x => x.Id).Column("TRUSTID");
        Map(x => x.AccountNumber).Column("ACCTNBR");
    }
}

public class AccountHistoryMap : ClassMap<AccountHistory>
{
    public AccountHistoryMap()
    {
        Table("TRUSTACCTGHISTORY");
        Id (x=>x.Id).Column("ID");
        References<Trust>(x => x.Trust).Column("ACCOUNTNUMBER").ForeignKey("ACCTNBR").Fetch.Join();
        Map(x => x.PostingDate).Column("POSTINGDATE");
        );
public class AccountHistoryMap : ClassMap<AccountHistory>
{
    public AccountHistoryMap()
    {
        Table("TRUSTACCTGHISTORY");
        Id (x=>x.Id).Column("ID");
        References(x => x.Trust, "ACCOUNTNUMBER").PropertyRef("ACCTNBR").Fetch.Join();
        Map(x => x.PostingDate).Column("POSTINGDATE");
    }
}