我在别处问过这个问题,但没有得到任何明智的答复
我正在尝试映射一个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> 我可以持久化数据,但在检索数据时会出现键异常:{“值"0”不是"Project.PropertyType“类型,不能在此泛型集合中使用。参数名称: nHibernate”}
所以它不能映射到枚举,但是为什么呢?如果我有一个使用枚举的常规属性,它工作得很好。
我想要做的事情有可能实现吗?我找不到太多关于这样做的信息。
发布于 2009-10-28 09:31:19
您的映射将键显示为整数,而不是枚举。要正确映射枚举,请使用type="MyProject.Project.PropertyType, MyProject"。
但是,通常对于枚举来说,最好的方法是将类型信息完全排除在映射文件之外,让NHib通过反射来获取它。我对NHib源代码的理解意味着,如果你要映射到一个通用的IDictionary<K,V>中,那么NHib应该通过反射来获取你的键的确切类型。现在你仍然可以省略type属性。
https://stackoverflow.com/questions/1629445
复制相似问题