关于Linq to sql 应用时出现的一个‘row not found or changed’ 异常
今天在一个小项目中应用”Linq to Sql“的时候出现了一个异常“row not found or changed“,但是明显有找到对应实体,并且也明显有修改过它的值,怎么会出现这异常呢,晕了,于是在网上找资料,一搜一大把,而头上几条结果惊人的雷同,于是,我就觉得吧,问题应该就是这样了,于是乎赶紧拿来主义,而出人意料的是,这些被N多人传诵解决方法碰壁了!
解决方法源代码:foreach (System.Data.Linq.ObjectChangeConflict occ in dtx.ChangeConflicts)
{
//以下是解决冲突的三种方法,选一种即可
// 使用当前数据库中的值,覆盖Linq缓存中实体对象的值
// occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
// 使用Linq缓存中实体对象的值,覆盖当前数据库中的值
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
// 只更新实体对象中改变的字段的值,其他的保留不变
occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
//以下是解决冲突的三种方法,选一种即可
// 使用当前数据库中的值,覆盖Linq缓存中实体对象的值
// occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
// 使用Linq缓存中实体对象的值,覆盖当前数据库中的值
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
// 只更新实体对象中改变的字段的值,其他的保留不变
occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
}
这一下子的三个解决方法,却解决不了我所遇到的一个小问题。
其实作为一个实体数据库映射的解决方法,实体数据与数据库字段对关系是基础,于是,我想到我生成.dbml文件后,数据库增加了两个可为空值的字段,手工增加实体对应属性时忽略了它们的可空性!于是更新的时候出现了上述异常!同时删除时报!
也许是我所遇到异常的层次太浅,还不够格用到开场所说的解决办法!但是,新学新用新东西的,掌握原理,遇到问题的多一份思考,而不是盲目的去网上找资料!自我清晰的思路最为重要!