Словарь не будет сохраняться с NHibernate 3.0 - PullRequest
1 голос
/ 15 ноября 2010

У меня есть следующая сущность:

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>

Проблема заключается в том, что при сохранении сущности предупреждения словарь сообщений не сохраняется в базе данных.На самом деле мой код выглядит как код, который Орен использовал в своем блоге: http://ayende.com/Blog/archive/2009/06/03/nhibernate-mapping-ndash-ltmapgt.aspx

Кто-нибудь сталкивался с такой же проблемой?

1 Ответ

1 голос
/ 16 ноября 2010

Убедитесь, что ваш столбец канала является целым числом в вашей схеме, поскольку перечисление CxChannel будет отображаться как 0 (для сообщения) и 1 (для электронной почты).Я просто вставил ваш код и сопоставления в консольный проект, использовал новый SchemaExport (cfg) .Execute (false, true, false) и успешно вставил строки в сгенерированную базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...