我在其他地方问这个问题并没有得到任何明智的回复
我正在尝试映射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”}
所以它无法映射到枚举,但为什么呢?如果我有一个使用枚举的常规属性,它工作正常。
我正在尝试做甚么可能吗?我找不到有关这方面的更多信息。
答案 0 :(得分:0)
您的映射将键显示为整数,而不是枚举。要正确映射枚举,请使用type="MyProject.Project.PropertyType, MyProject"
。
但是,通常对于枚举,最好的方法是将类型信息完全保留在映射文件之外,让NHib通过反射来获取它。我对NHib源的阅读意味着如果你要映射到通用IDictionary<K,V>
,那么NHib应该通过反射来获取你的密钥的确切类型。你仍然可以省略类型属性。