【问题标题】:nHibernate mapping generic IDictionarynHibernate 映射通用 IDictionary
【发布时间】:2009-10-27 08:38:07
【问题描述】:

我在别处问过这个问题,没有得到任何明智的答复

我正在尝试映射一个 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”}

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

我想要做的甚至可能吗?我找不到太多关于这样做的信息。

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我将尝试删除类型信息,我必须使用 ActiveRecord 作为顶部的额外层,这会使事情变得更复杂。
    猜你喜欢
    • 2012-04-09
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2011-01-29
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多