【问题标题】:NHibernate fluent HasMany testing with PersistenceSpecificationNHibernate fluent HasMany 测试与 PersistenceSpecification
【发布时间】:2011-12-20 23:52:23
【问题描述】:

我有一个定义命令的表,一个命令有一个参数列表,一个参数必须有一个命令。这意味着 parameterMap 中的引用:

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

和一个 HasMany 命令来填充列表:

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))

这可以测试吗?

【问题讨论】:

    标签: c# database nhibernate testing fluent-nhibernate


    【解决方案1】:

    你已经设置了inverse=true,这意味着参数负责关联。因此,您必须在参数上设置属性命令:

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

    更新:

    根据参考声明,.KeyColumn("GUID_PARAMETER") 应该是.KeyColumn("GUID_COMMAND")

    【讨论】:

    • 这就是我在command.AddParameter(parameter) 方法中所做的。实际上,当我在 AddParameter 中进行调试时,看起来参数具有对命令的引用和对参数的命令。当 nhibernate 插入该命令的参数时,该命令具有 NULL guid。
    • 关于更新:我想这意味着我什至可以跳过设置 KeyColumn 名称,因为 GUID_COMMAND。顺便说一句,我也不工作。我有另一个类似的情况,事情似乎更有效,因为它显示了一个异常Actual count (0) does not equal expected count (1)
    • 不,您需要指定 KeyColumn,否则它将默认为“commandId”而不是“GUID_COMMAND”并正确插入,但在加载时找不到集合的任何项目,因此出现错误消息
    • 是的@Firo 我发现在再次通过测试后,它把它称为 command_id 作为默认键。谢谢
    • 那甚至说哪个参数负责它失败的关联。测试以 INSERT INTO MST_PARAMETER... 开始,这很好,但是由于 db 约束,GUID_COMMAND 会崩溃。 @Firo
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2012-04-03
    • 2012-10-19
    相关资源
    最近更新 更多