使用Linq時出現Row not found or changed. Linq 找不到行或行已更改的解決辦法
在使用Linq的時候經常出現在了這樣的一個錯誤
Row not found or changed. 找不到行或行已更改
解決方案。
如果不是重要的數據。不需要去理會并發重突。
一個簡單的方案就是
打開dbml (linq)文件把實體類中的 屬性 "Update check" 改為 Never.
主鍵(ID)就不要改了。
第二種方法. 不著征對一些記數情況的更新. 請直接用sql 語句,而不需要去取出整個數據然后再更新.這樣就可能存在沖突了.
dC.ExecuteCommand("UPDATE [dbo].[MyTable] SET num=num+1 WHERE ID = @p0", m.ID);
第三種方法.
try
{
dc.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
}
catch (System.Data.Linq.ChangeConflictException ex)
{
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues); //保持當前的值
DC.ChangeConflicts.ResolveAll( RefreshMode.OverwriteCurrentValues);//保持原來的更新,放棄了當前的值.
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原來的值 有沖突的話保存當前版本
// 注意:解決完沖突后還得 SubmitChanges() 一次,不然一樣是沒有更新到數據庫的
db.SubmitChanges();
}
浙公網安備 33010602011771號