nHibernate отображение общего IDictionary - PullRequest
0 голосов
/ 27 октября 2009

Я спросил это в другом месте и не получил никакого разумного ответа

Я пытаюсь отобразить 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 "и не может использоваться в этой универсальной коллекции. Имя параметра: ключ"}

Так что он не может отображаться на enum, но почему? если у меня есть обычное свойство, использующее перечисление, оно работает нормально.

Возможно ли то, что я пытаюсь сделать? Я не могу найти много информации о том, как это сделать.

1 Ответ

0 голосов
/ 28 октября 2009

Ваше отображение показывает ключ как целое число, а не как перечисление. Чтобы правильно отобразить перечисление, используйте type="MyProject.Project.PropertyType, MyProject".

Тем не менее, обычно для перечисления лучший подход состоит в том, чтобы вообще исключить информацию о типе из файла отображения и позволить NHib поднять ее путем отражения. Мое чтение источника NHib подразумевает, что если вы отображаете общий IDictionary<K,V>, то NHib должен подобрать точный тип вашего ключа с помощью отражения. IOW вы все еще должны быть в состоянии опустить атрибут type.

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