nHibernate映射通用IDictionary

时间:2009-10-27 08:38:08

标签: nhibernate

我在其他地方问这个问题并没有得到任何明智的回复

我正在尝试映射IDictionary。我有这个映射:

<class name="MyProject.Item, MyProject" table="Item"> 
<...>
<map name="Properties" access="property" table="ItemProperties" lazy="false"> 
  <key column="ItemID" /> 
  <index column="Idx" type="int" /> 
 <element column="Value" type="System.Boolean, mscorlib"/> 
</map> 

我可以保留数据,但是当检索数据时,我得到一个nHibernate异常: {“值”0“不是”Project.PropertyType“类型,不能在此通用集合中使用。参数名称:key”}

所以它无法映射到枚举,但为什么呢?如果我有一个使用枚举的常规属性,它工作正常。

我正在尝试做甚么可能吗?我找不到有关这方面的更多信息。

1 个答案:

答案 0 :(得分:0)

您的映射将键显示为整数,而不是枚举。要正确映射枚举,请使用type="MyProject.Project.PropertyType, MyProject"

但是,通常对于枚举,最好的方法是将类型信息完全保留在映射文件之外,让NHib通过反射来获取它。我对NHib源的阅读意味着如果你要映射到通用IDictionary<K,V>,那么NHib应该通过反射来获取你的密钥的确切类型。你仍然可以省略类型属性。