NHibernate中与索引集合的双向一对多关联

NHibernate中与索引集合的双向一对多关联,nhibernate,Nhibernate,去年夏天,我问了一个关于。其中一个答案是让我在下面的文章中回答这一段: 请注意,NHibernate不支持与索引集合(列表、映射或数组)的双向一对多关联,因为“多”端必须使用集合或包映射 虽然我很确定我理解这段话的意思,但我不知道为什么或者如何绕过这个限制。由于我现在再次使用一个似乎需要“与索引集合的双向一对多关联”的模型,我认为现在是提出后续问题的时候了: 为什么NHibernate对关联有这种限制?我的印象是NHibernate背后的人都很聪明,所以我认为这是一个很好的理由 这个缺点的常见解

去年夏天,我问了一个关于。其中一个答案是让我在下面的文章中回答这一段:

请注意,NHibernate不支持与索引集合(列表、映射或数组)的双向一对多关联,因为“多”端必须使用集合或包映射

虽然我很确定我理解这段话的意思,但我不知道为什么或者如何绕过这个限制。由于我现在再次使用一个似乎需要“与索引集合的双向一对多关联”的模型,我认为现在是提出后续问题的时候了:

  • 为什么NHibernate对关联有这种限制?我的印象是NHibernate背后的人都很聪明,所以我认为这是一个很好的理由

  • 这个缺点的常见解决方法是什么?是否将集合设置为非索引包,并向子类添加显式的
    Position
    属性?有更好的解决办法吗


  • 这是4个月前问的,所以我不知道您是否仍然感兴趣:-)

    不支持双向索引关联的概念原因很简单:索引仅在一个方向上有意义

    例如,考虑<代码>发票类,使用<代码>行>代码>属性>代码> IIST ./P> 设置

    line.Invoice=anInvoice
    没有意义,因为无法确定列表索引应该是什么

    请记住,NHibernate“将”双向关系视为两种不同的关系(因此需要在不负责维护它的一侧使用
    reverse=“true”

    解决方法正是您建议的:子类中的Position/Index/etc属性