C# Fluent Nhibernate每个实体的表映射,带有复合主键/外键
在.hbm.xml中,我所追求的映射将如下所示-知道如何在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"/> <
<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方法!