Вы не можете непосредственно его просмотреть. Есть два правила, которые необходимо учитывать:
- Всегда использовать интерфейсы для коллекций (например,
IList<T>
, IDictionary<K,V>
.)
- NH не поддерживает вложенные коллекции. Я никогда не видел приложения для него до и никогда не слышал, чтобы кто-то запросил его.
Поместите свой список строки в интерфейсы классов и использования:
class StringList
{
IList<string> Strings { get; private set; }
}
class Entity
{
private IDictionary<string, StringList> stringDict;
}
Вы даже можете увидеть некоторые преимущества наличия такого класса.
Mapping:
<class name="Entity">
...
<map name="stringDict" table="Entity_StringDict" access="field">
<key column="Entity_FK"/>
<index column="Key" type="System.String"/>
<composite-element class="StringList">
<bag name="Strings" table="Entity_StringDict_Strings">
<key column="Entity_StringDict_FK"/>
<element type="System.String" column="String"/>
</bag>
</composite-element>
</map>
</class>
Карты на три таблицы:
- Таблица
Entity
- Таблица
Entity_StringDict
- Колонка
Entity_FK
- Колонка
Key
- Таблица
Entity_StringDict_Strings
- Колонка
Entity_StringDict_FK
- Колонка
String
Потрясающе, я дам ему попробовать! – ulu
Хмм, я получаю сообщение об ошибке: Ошибка проверки XML: элемент «составной элемент» в пространстве имен «urn: nhibernate-mapping-2.2» имеет недопустимый дочерний элемент «сумка» в пространстве имен «urn: nhibernate-mapping-2.2» , Список ожидаемых элементов: «parent, property, many-to-one, inested-composite-element» в пространстве имен «urn: nhibernate-mapping-2.2». Использование Nhibernate 2.0.1 .. – ulu
Кроме того, в документах говорится: «Композитные элементы могут содержать компоненты, но не коллекции». – ulu