开发者

Fluent Nhibernate Table-Per-Entity Mapping with Composite Primary/Foreign Keys

In .hbm.xml the mapping I am after would look as follows - any idea how I can reproduce this in 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="开发者_C百科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>

At the moment I have

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);
    }
}

but I can't figure out how, in the Tyranosaur SubclassMap, to specify the composite key. An issue on the NHibernate issue tracker suggest that this has been fixed in the 1.0 RTM build (I am using 1.0.0.593)


Found the answer - you need to make multiple calls to the .KeyColumn method to add the columns - perhaps .AddKeyColumn would have been a better name for it...?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜