Nhibernate映射与复合索引

时间:2010-03-24 19:14:44

标签: c# nhibernate nhibernate-mapping

我是NHibernate的新手,在尝试为IDictionary建模时遇到了问题。

我的dicionary的关键是一个名为'Identifier'的复杂类型,相应的'value'是string类型,例如IDictionary<Identifier,string>.

(如果实体名称'Identifier'让这个令人困惑,它是一个域名术语而我继续使用它,我很抱歉:))

我的映射如下:

<map name="Identifiers" table="ShareClassIdentifier" lazy="false" >
  <key>
    <column name="ShareClassIdentifier_ShareClassId"  />
  </key>
  <composite-index class="Identifier">
    <key-property column="ShareClassIdentifier_IdentifierId" name="Id" />
  </composite-index>
  <element column="ShareClassIdentifier_Value" type="System.String"  />
</map>

哪个工作正常,NHibernate创建我的字典并填充键的值。但是,我的标识符实体未被填充。创建了标识符实体,但缺少其所有属性(除了其ID)。

使用NHibernate Profiler,我可以看到NHibernate没有加入我的Identifier表,但我无法弄清楚如何在上面的映射中指定这个连接?

提前致谢

1 个答案:

答案 0 :(得分:1)

您将Identifier映射到那里,好像它只是一个属性(Id)的组件。

如果是实体,请将<composite-index>元素替换为:

<map-key-many-to-many class="Identifier"
                      column="ShareClassIdentifier_IdentifierId"/>