NHibernate: отображение словаря списков

Используйте document.title.

См. эта страница для элементарного учебного руководства также.

8
задан Stefan Steinegger 21 August 2009 в 07:08
поделиться

1 ответ

Вы не можете напрямую сопоставить это. Следует учитывать два правила:

  • Всегда использовать интерфейсы для коллекций (например, IList , IDictionary )
  • NH не поддерживает вложенные коллекции. Я никогда раньше не видел приложения для этого и никогда не слышал, чтобы кто-то его запрашивал.

Поместите свой список строк в класс и используйте интерфейсы:

class StringList
{
  IList<string> Strings { get; private set; }
}

class Entity
{
  private IDictionary<string, StringList> stringDict;
}

Вы можете даже увидеть некоторые преимущества наличия такого класса.

Отображение:

<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_StringDict
    • Столбец Entity_FK
    • Столбец Ключ
  • Таблица Entity_StringDict_Strings [1218148] Столбец 1150_StringDict_Strings [1218148] Столбец 1150Dict_Strings [1218148] Столбец 1150_StringDict_Strings [1218148] Столбец 1150 ] Столбец Строка
7
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: