I had the same question and read the code. I found the following:
(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);
}
// ...
}
Which means to me:
- It is basically the same.
list-index
overwrites index
- The type of the
index
is set to int
. So you had to check what actually happens when using another type in the mapping file.
list-index
supports base
to tell it on which index to start. (This is found somewhere else)