C# Fluent Nhibernate每个实体的表映射,带有复合主键/外键

C# Fluent Nhibernate每个实体的表映射,带有复合主键/外键,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,在.hbm.xml中,我所追求的映射将如下所示-知道如何在Fluent NHibernate中重现此映射吗 <class name="Dinosaur" table="Dinosaur" > <composite-id> <key-property name="Id" column="Id"/> <key-property name="Period" column="Period"/> <

在.hbm.xml中,我所追求的映射将如下所示-知道如何在Fluent NHibernate中重现此映射吗

    <class name="Dinosaur" table="Dinosaur" >
    <composite-id>
        <key-property name="Id" column="Id"/>
        <key-property name="Period" column="Period"/>
    </composite-id>
    <property name="DinosaurType" column="DinosaurType"  /> 
<joined-subclass name="Tyranosaur" table="Tyranosaur">
    <key>
        <column name="DinosaurId"/>
        <column name="DinosaurPeriod"/>
    </key>
    <property name="NumberOfTeeth">
        <column name="NumberOfTeeth">
        </column>
    </property>
</joined-subclass>

目前我有

public class DinosaurMap : ClassMap<Dinosaur>
{
    public DinosaurMap()
    {
    Table("Dinosaur");
    CompositeId()
        .KeyProperty(x => x.Id, "Id")
        .KeyProperty(x => x.Period, "Period")
    ;
    Map(x=>x.DinosaurType)
    ;
    }
}
public class TyranosaurMap : SubclassMap<Tyranosaur>
{
    public TyranosaurMap() 
    {
        Map(x=>x.NumberOfTeeth);
    }
}
公共类映射:类映射
{
公共地图()
{
表(“恐龙”);
复合ID()
.KeyProperty(x=>x.Id,“Id”)
.KeyProperty(x=>x.Period,“Period”)
;
映射(x=>x.type)
;
}
}
公共类TyranosaurMap:子类Map
{
公共暴龙地图()
{
Map(x=>x.numberoftooth);
}
}

但我不知道如何在泰龙的子类映射中指定复合键。NHibernate问题跟踪程序上的一个问题表明,这已在1.0 RTM版本中修复(我使用的是1.0.0.593)

找到答案-您需要多次调用.KeyColumn方法来添加列-也许.AddKeyColumn会是一个更好的名称…?

找到答案-您需要多次调用.KeyColumn方法来添加列-也许.AddKeyColumn会是一个更好的名称…?

是,您必须在子类映射中调用KeyColumn方法!是的,您必须在子类映射中调用KeyColumn方法!