Я только что играл с этим, и 2) работает для меня. Ваше отображение в порядке.
Я полагаю, что NHibernate упорядочивает коллекцию в памяти на основе значения столбца индекса, не выполняя SQL-оператор Order By. Мне пришла в голову мысль, что NHibernate мог бы выполнить сортировку памяти здесь - Это выполняет упорядочивание в запросе SQL, а не в памяти.
Я не смог найти сортировку памяти коллекции в коде NHibernate, поэтому, чтобы доказать, что сортировка памяти работает, я удалил первичный ключ (Id, Index) из таблицы дочерних сущностей, сохранил 2 дочерних сущности (index 0 и index 1). ), вручную - используя ручной sql - переключил значения индекса (поэтому первая запись получила индекс 1, а вторая запись получила индекс 0), затем я загрузил родительский объект и проверил, что записи были загружены в ожидаемом порядке.