使用复合主键/外键的流畅Nhibernate表实体映射

时间:2010-04-12 21:54:35

标签: 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"/>
    </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);
    }
}

但我无法弄清楚如何在Tyranosaur SubclassMap中指定复合键。 NHibernate问题跟踪器上的一个问题表明这已在1.0 RTM版本中修复(我使用的是1.0.0.593)

1 个答案:

答案 0 :(得分:4)

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