Я сопоставляю дерево ProductCategory с помощью Fluent NHibernate, и все шло нормально, пока я не попытался пройтись по дереву, которое возвращается из базы данных, чтобы убедиться, что оно правильно сохраняется и извлекается.
Вот как я тестирую:
- Создайте 4 категории: напитки, пиво, светлое пиво и темное пиво.
- Добавьте пиво к напиткам, затем светлое пиво и темное пиво к пиву.
- Сохранить напитки (каскад установлен на AllDeleteOrphan)
- Сброс сеанса, при котором сохраняется все дерево
- Исключите каждую из ProductCategories из сеанса
- Загрузить напитки из базы данных
- Убедитесь, что загруженный объект (из БД) является EqualTo, но не SameAs Beverages.
- Убедитесь, что fromDB имеет только одну дочернюю категорию ProductCategory.
- Убедитесь, что единственным дочерним элементом в fromDB является EqualTo, а не SameAs Beer.
Тест не пройден, потому что дочерний элемент — тот же пиво, что и пиво. Это означает, что на самом деле он не загружает объект из базы данных, потому что он все еще находится где-то в сеансе NHibernate.
Любое понимание будет высоко оценено.
Изменить: в ответ на комментарии Шона ниже. Я использую базу данных SQLite в памяти, поэтому, как только сеанс/соединения закрываются, база данных сдувается.