Linq找不到行或行已更改

作者: Robin 分类: Asp.net 发布时间: 2010-03-06 17:07

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签云