[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();