Вопрос

Привет всем. Быстрый вопрос о свободном синтаксисе. Я думал, что у меня есть это, но я получаю странный сбой. По сути, у меня есть иерархическая структура, которую я пытаюсь сохранить, и, похоже, все это работает, за исключением случаев, когда я делаю настоящий интеграционный тест с БД.

У меня есть объект 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top