NHibernate бегло тестирование HasMany с PersistenceSpecification - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть таблица, которая определяет команду, команда имеет список параметров, а параметр должен иметь команду.Это означает ссылку в параметреMap:

Id(x => x.Id).Column("GUID_PARAMETER").GeneratedBy.Assigned();
References(x => x.Command).Column("GUID_COMMAND").Cascade.All();
Table("MST_PARAMETER");

и команду HasMany in для заполнения списка:

Id(x => x.Id).Column("GUID_COMMAND").GeneratedBy.Assigned();
HasMany<ParameterEntity>(x => x.ParameterList)
  .Table("MST_PARAMETER")
  .KeyColumn("GUID_PARAMETER")
  .Inverse()
  .Cascade.All();
Table("MST_COMMAND");

Затем при попытке проверить, что команда имеет список параметров, я всегдапоявляется сообщение об ошибке, в котором говорится, что я не могу вставить параметр с помощью пустой команды.

Для того, что я видел, правильный способ добиться этого заключается в таком вызове при тестировании карты команд

new PersistenceSpecification<CommandEntity>(_session)
.CheckProperty(c => c.Id, Guid.NewGuid())
.CheckList(c => c.ParameterList, FixtureUtils.GetDefaultParameterListFromCommand(), (command, parameter) => command.AddParameter(parameter))

Это проверяемое?

1 Ответ

0 голосов
/ 07 ноября 2011

вы установили inverse=true, что означает, что параметр отвечает за связь. Для этого вы должны установить команду свойства для параметра:

.CheckList(c => c.ParameterList, FixtureUtils.GetDefaultParameterListFromCommand(), (command, parameter) => { command.AddParameter(parameter); parameter.Command = command; })

Обновление:

.KeyColumn("GUID_PARAMETER") должно быть .KeyColumn("GUID_COMMAND") согласно ссылочной декларации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...