[Linq2Sql]刪除後重新排列的異象 ?
資料表: Test
ID int (PK)
Type int (類型)
Name nvarchar(50) (名稱)
Order int (順序)
需求: 刪除一筆資料時需重新排列同類型之Order
現象: 資料刪除, 但重新排列時, 出現跳號
原程式
1: int type = 0;
2: context.Test.DeleteOnSubmit(
3: context.Test.Where(x=>x.ID==ID).Single() );
4:
5: int i=1;
6: foreach(var o in context.Test.Where(x=>x.Type==type)){
7: o.Order = i;
8: i++;
9: } context.SubmitChanges();
資料:
0, 1,'A', 1
1, 1,'B', 2
2, 1,'C', 3
3, 1,'D', 4
當刪除 Name = B 時, 預期要重新排序, 但因為查詢回來要變更的物件, 竟含有'B', 故中間就空了一個2號
暫時的解決: 先包在一起 ... 有空再來查
1: int i=1;
2: foreach(var o in context.Test.Where(x=>x.Type==type)){
3: if(o.ID==ID){
4: i--;
5: context.Test.DeleteOnSubmit(o);
6: }else{
7: o.Order = i;
8: }
9: i++;
10: }
11: context.SubmitChanges();