2010-04-15 119 views
5

去年夏天,我问了一个关于how to add new object to an IList mapped as a one-to-many with NHibernate的问题。答案之一,让我这一段的documentation在NHibernate中与索引集合的双向一对多关联

请注意,NHibernate的不支持双向one-to-many关联与索引的集合(list,map或者array)作为“多”端,你必须使用一套或包映射。

虽然我敢肯定我明白这一段说的话,我不知道为什么如何解决此限制。由于我现在再次,似乎需要“与索引集合双向one-to-many关联”模型的工作,我想时间是正确的后续问题:

  1. 为什么NHibernate的对关联有这个限制吗?我觉得NHibernate背后的人很聪明,所以我认为这是一个很好的理由。

  2. 这个缺点的常见解决方法是什么?使这个集合成为一个没有索引的包,并将一个明确的Position属性添加到子类中?有更好的解决方案

回答

5

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

概念理由不支持双向索引协会很简单:指数才有意义在一个方向。

例如,考虑一个Invoice类,其类型为IList<Line>Lines属性。

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

记住NHibernate的“看”是两个不同的关系,双向关系(因此需要inverse="true"就在身边不负责维护它的)

的解决方法是,你提出什么:位置/索引/ etc属性在子类中。