gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:10:05 25 4
gpt4 key购买 nike

去年夏天,我问了一个关于 how to add new object to an IList mapped as a one-to-many with NHibernate 的问题.答案之一让我对 documentation 中的这一段:

Please note that NHibernate does not support bidirectional one-to-many associations with an indexed collection (list, map or array) as the "many" end, you have to use a set or bag mapping.



虽然我很确定我理解这一段的意思,但我不知道为什么或如何解决这个限制。当我现在再次使用一个似乎需要“与索引集合的双向一对多关联”的模型时,我认为是时候讨论后续问题了:
  • 为什么 NHibernate 对关联有这种限制?我的印象是 NHibernate 背后的人非常聪明,所以我认为有一个很好的理由。
  • 此缺点的常见解决方法是什么?使集合成为非索引包并添加显式 Position子类的属性(property)?有什么更好的解决方案吗?
  • 最佳答案

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

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

    例如,考虑一个 Invoice类与 Lines类型的属性 IList<Line> .

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

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

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

    关于nhibernate - NHibernate 中索引集合的双向一对多关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643755/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com