我有两个具有多对多关系的实体,我正在寻找一种能够对表中的结果进行排序的方法。
换句话说,当我从table1获得一行,并从table2获得所有相应的记录时,我希望能够有一个针对table2的特定于table1中该行的存储排序顺序。
我的第一个想法是向表示关系的表中添加一个排序列,但据我所知,没有办法访问关系中的新列。
有没有人对如何做到这一点有什么建议?
发布于 2012-06-07 18:55:49
感谢大家对我的问题的良好回答。我现在对不同解决方案的利弊更有信心了。
我最终做的是:事实证明,只需向关系表添加一个排序列并不会影响模型,从DB更新仍然有效,并且表仍然映射为多对多关系。然后,我创建了一个从关系表获取排序列的存储过程,以及另一个更新指定记录的排序索引的存储过程。
发布于 2012-06-05 18:09:42
正如Ladislav Mrnka所说,如果您将新列添加到连接表中,将会有一个新的实体“在中间”,这将使导航变得更加困难。
如果您希望避免这种情况,但仍然可以像往常一样进行导航,则可以保留连接表并添加一个新表,就像添加了order列的连接表一样。当您需要订单信息时,您只需连接此表即可获取并使用它。
当然,这个新的表需要一些维护。也就是说,您可以为连接表的junction+order创建delete on cascade。并使用触发器(哦,这可不好!)为每个新创建的关系创建具有默认顺序的新行。因此,在您的业务逻辑中处理这一点会更可取。
我知道这太棘手了,但没有什么神奇的解决方案...只要选择你觉得更舒服的就行了。
发布于 2012-06-05 17:52:16
您可以向连接表中添加新列,但是该表将成为一个新实体,因此您的模型现在将由三个实体where和两个一对多关系组成,而不是两个实体和单个多对多关系。
https://stackoverflow.com/questions/10894925
复制相似问题