Как я могу сопоставить список строк моей сущности, используя NHibernate? - PullRequest
2 голосов
/ 08 сентября 2008

В моей базе данных есть две таблицы: статьи и теги

Таблицы тегов состоят из ArticleID (внешний ключ) и тега (varchar).

Теперь мне нужно отобразить теги article в коллекцию «Только для чтения» для объекта Article, используя теги IList или ReadOnlyCollection.

Я ознакомился со справочным материалом NHibernate, но не могу понять, когда использовать Set, Bag и другие коллекции Nhibernate. Я видел примеры использования коллекции ISet, но мне не нравится связывать свои классы сущностей с типом NHibernate.

Как я могу сделать сопоставление в NHibernate?

edit: вместо этого я использовал <bag>, так как для него не требуется индекс:

<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
  <key column="ArticleId" />
  <element column="Tag" type="System.String" />
</bag>

1 Ответ

5 голосов
/ 08 сентября 2008

Тип коллекции для использования в вашем отображении зависит от того, как вы хотите представить коллекцию в коде. Карта настроек выглядит так:

  • <list> отображается непосредственно на IList.
  • <map> отображается непосредственно на IDictionary.
  • <bag> отображается на IList. А не полностью соответствует с интерфейсом IList, потому что Метод Add () не гарантируется верните правильный индекс. Объект можно добавить к <bag> без инициализация IList. Убедись в либо скрыть IList от потребители вашего API или сделать его хорошо задокументировано.
  • <set> отображается на Iesi.Collections.ISet. Тот интерфейс является частью Iesi.Collections Assembly распространяется с помощью NHibernate.

поэтому, если вы хотите, чтобы был возвращен IList, вы должны использовать отображение <list>. В вашем случае, я бы, вероятно, отобразил, используя отображение <list>.

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