我有一个包含三个字段的表:Id,location,sortorder。
Id location sortorder
-- -------- ---------
1 a 1
2 b 2
3 c 3
4 d 4
我希望用户能够修改表格中项目的排序顺序。我正在使用EF写入数据库,有没有办法修改表上的排序顺序而不必加载对数据库的调用。
如果我将项目从底部移到列表顶部,我需要更新该新行下面的所有行,以便按顺序移动它们。如果可能的话,我想避免对数据库进行 n 更新,并尽可能少地进行更新。
这可能吗?
答案 0 :(得分:0)
我相信Gert建议使用浮动排序顺序可能是最好的选择。 Drupal使用菜单项的权重用于相同的目的,但以100或1000的增量插入,以便您可以在事物之间进行切换。我认为它也可以运行一个cron作业来重新排序,所以你不会在更高效的存储数据类型中耗尽数字,但这听起来像是我在中学的BASIC日子里的延续,你必须在那里做行号。
另外,我打赌它实际上并不像运行n更新一样糟糕,因为它反而做了一个影响n行的更新。是的,在一天结束时它必须改变n行,但这是在数据库方面,所以可以实现大量的效率来加速它。