2010-04-12 142 views
0

在.hbm.xml我後面的映射看起來如下 - 任何想法如何在Fluent NHibernate中重現此... ...?流利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)

回答

4

找到了答案 - 您需要對.KeyColumn方法進行多次調用以添加列 - 也許.AddKeyColumn會是一個更好的名字...?

+1

是的,你必須調用SubclassMap中的KeyColumn方法! – Falcon 2010-10-20 09:23:50