使用实体框架对行进行排序
本文关键字:排序 框架 实体 | 更新日期: 2023-09-27 18:21:21
我使用EF是为了从DB中插入和检索信息,有任何方法可以插入新行,但在指定的位置,
就像我有10行ID从0到9,而我插入的新行将在位置4上一样?
我使用的是ASP.NET MVC 5和LINQ。
谢谢。
简单的答案是否。顺序没有任何意义,除非它在数据库系统中是明确的。当然,在大多数情况下,我可以插入到一个表中,从这个确切的表中提取,并获得插入时的确切顺序,但这是未定义的。。。并且唯一的保证是使用CCD_ 1子句。
如果您正在讨论更改自动编号属性,这也是不可能的,因为数据库不会返回并用id号填补空白。如果编号对您来说至关重要,则不要设置自动递增特性。
您的ID
和order position
是不同的东西。
对于ID
,您使用了一个自动数字,您不应该搞砸它。
对于订单,您使用另一列,并在新行插入时运行触发器。更新所有行
因此,当用order_id = 4
插入新行时,所有行都会得到更新
类似的东西
UPDATE table
set order_id = order_id +1
when order_id >= 4
所以,我会很快做到:我会计划数据库不自动增加主键,并进行保存,以便根据特定位置对id进行属性化。显然,放一个IF来验证它是否可用,以及我是否会开始对后续ID的级联进行审查循环,或者最终定位交易的价值。
例如
MyTable table = myDb.MyTable.Find(id); //position
if (table==null)
{ table.id=position; table.Field=value; myDb.SaveChanges() }
else
{
var temp = table.id;
var max = table.count(x=> x.id).value;
table.id=max+1;myDb.SaveChanges();
table.id=id; table.Field=value; myDb.SaveChanges();
}
对不起,如果翻译不好!;-)