Я пытаюсь использовать тестирование спецификации персистентности , встроенное в FNH. CheckList
метод, кажется, были добавлены в последнее время, но чем старше CheckEnumerable
уже устарел, поэтому я предполагаю, что CheckList
устойчива.
Мой тестовый код выглядит примерно так:
new PersistenceSpecification<Parent>(session)
.CheckProperty(x => x.Foo, 123)
.CheckList(x => x.Children,
new Child[] { new Child { Name = "Bob" } },
(p, c) =>
{
p.Children.Add(c);
c.Parent = p;
})
.VerifyTheMappings();
Обратите внимание, что в отображении Parent
принадлежит отношение (имеет Cascade.AllDeleteOrphan()
, а не имеет Inverse
).
Когда я запускаю его, я получаю страшное «Невозможно вставить NULL-значение в ...» Сообщение об ошибке SQL Server, поскольку NHibernate не устанавливает ParentId
для объекта Child
. То же, что происходит, когда вы забыли установить связь на обоих концах.
Я проверил с точкой останова, и код внутри лямбды даже не выполняется Выполнено , поэтому очевидно, что связь не установлена должным образом.
Сами отображения совершенно верны; Я могу написать обычный код для создания и вставки сущности просто отлично. Это просто метод CheckList
, который я не могу заставить работать.
Что я делаю не так?