关于Linq报"Row not found or changed"错的解决
2008-09-25 15:20
381 查看
在使用Linq的当中遇到了"Row not found or changed",网上搜了很多也没有发现是什么原因。
我是取出一个实体对象然后改变其中的一些值,然后进行DataContext.SubmitChanges(),系统报这个错。
在我给这个表添加了三个字段之前这些都是运行的很好,自从我添加了那三个字段并做了一些读写操作然后就开始报这个错,
网上搜罗一下倒是有人提这个问题的解决方案:
在使用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();
}
solution:
Open dbml (linq) file ,and find your entity change the propery(field) "update check " to Never
试了一下都不行。
后来又试了很多方式都不行,病急乱投医,问题肯定是出在我行添的那三个字段的问题上面,
于是我重点看了这三个字段,发现一个问题:
这三个字段在数据库中是可以为空的
但是在linq的定义中Nullable 定义为False
于是我把这三个字段都改为True,再试了一试,居然成功了。
这是为什么,有待继续研究。
Technorati : linq
我是取出一个实体对象然后改变其中的一些值,然后进行DataContext.SubmitChanges(),系统报这个错。
在我给这个表添加了三个字段之前这些都是运行的很好,自从我添加了那三个字段并做了一些读写操作然后就开始报这个错,
网上搜罗一下倒是有人提这个问题的解决方案:
在使用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();
}
solution:
Open dbml (linq) file ,and find your entity change the propery(field) "update check " to Never
试了一下都不行。
后来又试了很多方式都不行,病急乱投医,问题肯定是出在我行添的那三个字段的问题上面,
于是我重点看了这三个字段,发现一个问题:
这三个字段在数据库中是可以为空的
但是在linq的定义中Nullable 定义为False
于是我把这三个字段都改为True,再试了一试,居然成功了。
这是为什么,有待继续研究。
Technorati : linq
相关文章推荐
- LINQ:row not found or changed.错误提示可能的解决方法之一
- Bug解决之 Row not found or changed
- Row not found or changed. Linq 找不到行或行已更改
- Row not found or changed. Linq 找不到行或行已更改
- 关于Linq to sql 应用时出现的一个‘row not found or changed’ 异常
- LinqDataSource与datetime一起用出现"System.Data.Linq.ChangeConflictException: Row not found or changed"
- 关于Record not found or changed by another user的问题
- ChangeConflictException:Row not found or changed 找不到行或行已更改
- 【hibernate】关于org.hibernate.ObjectNotFoundException: No row with the given identifier exists 的快捷解决问题
- 数据保存时,出现‘record not found or changed by another user’错误信息的解决办法
- ChangeConflictException:Row not found or changed 找不到行或行已更改
- 关于org.hibernate.ObjectNotFoundException: No row with the given identifier exists 的快捷解决问题
- 数据保存时,出现‘record not found or changed by another user’错误信息的解决办法
- ChangeConflictException:Row not found or changed 找不到行或行已更改
- 数据保存时,出现‘record not found or changed by another user’错误信息的解决办法
- Row not found changed. Linq 找不到行或行已更改
- 关于Android SDK工具Lint的误报:Class referenced in the manifest, com.xxx.xxx.receiver.NetworkReceiver, was not found in the project or the libraries
- clientdataset“Record not found or changed by another user”问题
- 安装ADT的时候报错了(关于requires 'org.eclipse.gef 0.0.0' but it could not be found的解决方法)
- 关于"cannot be resolved or is not a field"错误的解决方法