关于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);

                } 

这一下子的三个解决方法,却解决不了我所遇到的一个小问题。 

其实作为一个实体数据库映射的解决方法,实体数据与数据库字段对关系是基础,于是,我想到我生成.dbml文件后,数据库增加了两个可为空值的字段,手工增加实体对应属性时忽略了它们的可空性!于是更新的时候出现了上述异常!同时删除时报!

 

 也许是我所遇到异常的层次太浅,还不够格用到开场所说的解决办法!但是,新学新用新东西的,掌握原理,遇到问题的多一份思考,而不是盲目的去网上找资料!自我清晰的思路最为重要!

posted @ 2012-03-28 14:48  Bluer  阅读(716)  评论(0编辑  收藏  举报