使用Fluent nHibernate连接具有不同列名的两个表

时间:2012-08-01 17:02:40

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

我使用流畅的nhibernate 3.1映射到旧数据库。我有两个类,并希望将B加入A.数据库结构没有外键。

AModel.OccurrenceNumber和BModel.OccurrenceNumber具有相同的数据(即,在一个和另一个中声明#1234),只是不同的列名。在映射阶段可以加入吗?如果需要,我可以编写一个linq语句来加入它们,但是想知道它是否可以在这里完成。提前谢谢。

public class AMap : ClassMap<AModel>
{
    public AMap()
    {
        Table("ATable");

        Id(x => x.Id).GeneratedBy.Increment();
        Map(x => x.OccurrenceNumber).Column("OCCUR"); //Same Data
    }
}

public class BMap : ClassMap<BModel>
{
    public BMap()
    {
        Table("BTable");

        Id(x => x.Id).GeneratedBy.Increment();
        Map(x => x.OccurrenceNumber).Column("B69_CLAIM_OCCUR"); // Same Data
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在AMap或BMap类中声明以下引用

References<AModel>(x => x.AModels).Column("B69_CLAIM_OCCUR").PropertyRef("OccurrenceNumber").ReadOnly();

在BModel类中已将AModeldata数据定义为

public virtual IList<AModel> AModels{ get; set; }

因此,当您编写加入这两个表的查询时,它将自动加入B69_CLAIM_OCCUROCCUR

我假设你在A和B实体之间有一对多的关系。