使用实体框架对行进行排序

本文关键字:排序 框架 实体 | 更新日期: 2023-09-27 18:21:21

我使用EF是为了从DB中插入和检索信息,有任何方法可以插入新行,但在指定的位置,

就像我有10行ID从0到9,而我插入的新行将在位置4上一样?

我使用的是ASP.NET MVC 5和LINQ。

谢谢。

使用实体框架对行进行排序

简单的答案是。顺序没有任何意义,除非它在数据库系统中是明确的。当然,在大多数情况下,我可以插入到一个表中,从这个确切的表中提取,并获得插入时的确切顺序,但这是未定义的。。。并且唯一的保证是使用CCD_ 1子句。

如果您正在讨论更改自动编号属性,这也是不可能的,因为数据库不会返回并用id号填补空白。如果编号对您来说至关重要,则不要设置自动递增特性。

您的IDorder 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();
}

对不起,如果翻译不好!;-)