Inheritance Fluent NHibernate从继承的复合ID映射复合ID

Inheritance Fluent NHibernate从继承的复合ID映射复合ID,inheritance,fluent-nhibernate,nhibernate-mapping,composite-key,composite-id,Inheritance,Fluent Nhibernate,Nhibernate Mapping,Composite Key,Composite Id,假设我有一个包含以下3个表的现有数据库: 表1: (PK)T1ID1 (PK)T1ID2 表2: (PK)T2ID1 表3: (FK)T1ID1 (FK)T1ID2 (FK)T2ID1 (其中3个键来自上表) 我的问题是:如何使用Fluent NHibernate映射表3? 让我困惑的是,它的复合键来自两个不同的表,该怎么办 对于表1和表2的映射,我有以下内容: public class Table1 { public virtual long T1ID1 { get; set; }

假设我有一个包含以下3个表的现有数据库:

表1:
(PK)T1ID1
(PK)T1ID2

表2:
(PK)T2ID1

表3:
(FK)T1ID1
(FK)T1ID2
(FK)T2ID1 (其中3个键来自上表)

我的问题是:如何使用Fluent NHibernate映射表3?
让我困惑的是,它的复合键来自两个不同的表,该怎么办

对于表1和表2的映射,我有以下内容:

public class Table1
{
    public virtual long T1ID1 { get; set; }
    public virtual long T1ID2 { get; set; }
}

public class Table2
{
    public virtual long T2ID1 { get; set; }
}

public class Table1Map
{
    public Table1Map()
    {
        Table("Table1");

        CompositeId()
            .KeyProperty(x => x.T1ID1, "T1ID1")
            .KeyProperty(x => x.T1ID2, "T1ID2");
    }
}

public class Table2Map
{
    public Table2Map()
    {
        Table("Table2");

        Id(x => x.T2ID1, "T2ID1");
    }
}
试试看 我想你想要的是“.KeyReference()”属性。 上面的链接使用的是旧版本的FNH,但您需要关心的是,关于您的问题,方法名称略有不同。那篇文章的其余部分应该对你有所帮助


让我知道你的进展。

我在尝试用两个表组合pk映射m:n时感到有些痛苦。看起来不像你的案子那么有说服力。运气好吗?