我有以下实体:
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
有没有人遇到同样的问题?
答案 0 :(得分:1)
验证您的频道列是架构中的整数,因为CxChannel枚举将映射为0(对于Message)和1(对于电子邮件)。我只是将您的代码和映射粘贴到控制台项目中,使用新的SchemaExport(cfg).Execute(false,true,false),并成功将行插入到生成的数据库中。