NHibernate 3.0不会保留字典

时间:2010-11-15 20:31:17

标签: nhibernate

我有以下实体:

public class Alert
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual IDictionary<CxChannel, string> Messages { get; set; }
}

public enum CxChannel
{
    Message,
    Email
}

以及以下映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Entities.Alert, Entities" table="alert">
  <id name="Id" type="int" unsaved-value="0" access="property">
    <generator class="identity"/>
  </id>

  <property name="Name" column="name"/>
    <map name="Messages" table="alert_message" cascade="all">
      <key column="alert_id"/>
      <index column="channel" type="Entities.CxChannel, Entities"/>
      <element column="message" type="System.String"/>
    </map>
  </class>
</hibernate-mapping>

问题在于,当我保存警报实体时,Messages字典不会持久保存到数据库。事实上,我的代码看起来像Oren在他的博客帖子中使用的代码:http://ayende.com/Blog/archive/2009/06/03/nhibernate-mapping-ndash-ltmapgt.aspx

有没有人遇到同样的问题?

1 个答案:

答案 0 :(得分:1)

验证您的频道列是架构中的整数,因为CxChannel枚举将映射为0(对于Message)和1(对于电子邮件)。我只是将您的代码和映射粘贴到控制台项目中,使用新的SchemaExport(cfg).Execute(false,true,false),并成功将行插入到生成的数据库中。