Linq找不到行或行已更改

摘要 : Linq can not find the row or rows have been changed

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

solution:
Open dbml (linq) file ,and find your entity  change the propery(field) "update check " to Never
上一篇 :ValidateRequest=false 在.Net 4.0 中不管用
下一篇 :Iframe自适应高度IE7、Firefox