Свободные иерархические данные NHibernate
-
05-07-2019 - |
Вопрос
Привет всем. Быстрый вопрос о свободном синтаксисе. Я думал, что у меня есть это, но я получаю странный сбой. По сути, у меня есть иерархическая структура, которую я пытаюсь сохранить, и, похоже, все это работает, за исключением случаев, когда я делаю настоящий интеграционный тест с БД.
У меня есть объект Node, у которого есть свойство Parent, которое является другим Node, и поле _children, поддерживающее свойство Children только для чтения, которое также является коллекцией Nodes.
Свойства обрабатывают корреляцию отношений, и объекты в памяти тестируются очень хорошо. Когда я получаю их из репозитория (база данных SQLite в памяти в моих тестах), тем не менее, дочерние элементы любого узла по какой-то причине включают себя. Есть идеи?
Мои сопоставления в основном выполняются с помощью AutoMap, но я переопределил следующее:
mapping.References(x => x.Parent);
mapping.HasMany(x => x.Children).Inverse().Access.LowerCaseField(Prefix.Underscore);
Я также попробовал это сделать без вызова метода Inverse (). Р>
Решение
Понял. Проблема заключалась в том, что мне нужно было сообщить коллекции детей, какое поле Id нужно подключить для внешнего ключа. Р>
Я изменил это отображение так:
mapping.HasMany(m => m.Children)
.Inverse()
.KeyColumn("ParentId")
.Access.CamelCaseField(Prefix.Underscore)
.Cascade.All()