В чем разница между «index» и «list-index» - PullRequest
5 голосов
/ 01 апреля 2011

Для отображения коллекций в NHibernate с упорядоченными коллекциями, такими как списки, должно быть отображено поле столбца индекса. Я только что заметил, что в NHibernate 2.0, по-видимому, также есть свойство «list-index», которое (я считаю) может использоваться вместо индекса.

Помимо возможности указать базовое значение индекса с помощью "list-index", есть ли разница между ними? Есть ли преимущество в использовании одного VS другого?

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

У меня был тот же вопрос и я прочитал код. Я нашел следующее:

(NH 3.0, Cfg \ Collection Binder.cs, # 548)

private void BindCollectionIndex(/*...*/)
{
    // ...

    if (listMapping.ListIndex != null)
    {
        iv = new SimpleValue(model.CollectionTable);
        new ValuePropertyBinder(iv, Mappings).BindSimpleValue(
            listMapping.ListIndex,
            IndexedCollection.DefaultIndexColumnName, 
            model.IsOneToMany);
    }
    else if (listMapping.Index != null)
    {
        iv = new SimpleValue(model.CollectionTable);
        listMapping.Index.type = NHibernateUtil.Int32.Name;
        new ValuePropertyBinder(iv, Mappings).BindSimpleValue(
            listMapping.Index, 
            IndexedCollection.DefaultIndexColumnName,
            model.IsOneToMany);
    }
    // ...
}

Что для меня значит:

  • Это в основном то же самое.
  • list-index перезаписывает index
  • Тип index установлен на int. Поэтому вам пришлось проверить, что на самом деле происходит при использовании другого типа в файле сопоставления.
  • list-index поддерживает base, чтобы сообщить ему, с какого индекса начинать. (Это найдено где-то еще)
0 голосов
/ 01 апреля 2011

Рассматривая XSD, я могу сказать, что index поддерживает указание type и нескольких columns, поэтому его можно использовать с пользовательскими типами (я не пробовал)

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