首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >System.Data.Linq.ChangeConflictException:未找到行或行已更改

System.Data.Linq.ChangeConflictException:未找到行或行已更改
EN

Stack Overflow用户
提问于 2009-04-30 08:49:47
回答 16查看 58.7K关注 0票数 64

我正在尝试使用LINQ (No LINQDataSource)删除选定的网格视图行。

更改选择时,detailsview视图绑定也会更改。我可以向数据库中添加一个新条目,但是当我将这段代码添加到updatePanel中的delete按钮时,我得到了一个异常:

代码语言:javascript
复制
try
{           
    var query = from i in db.QuestionModules 
                where i.QuestionModuleID == QuestionModuleID 
                select i;

    QuestionModule o = query.First();
    db.QuestionModules.DeleteOnSubmit(o);
    db.SubmitChanges();
}

这是我得到的异常:

代码语言:javascript
复制
System.Data.Linq.ChangeConflictException: Row not found or changed. at
System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode
failureMode) at
System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges() 

我已经有这个问题大约一周了,无论我做什么,它仍然在那里,并且记录不会被删除。

你有什么建议吗?

EN

回答 16

Stack Overflow用户

发布于 2011-05-29 08:45:23

出现此错误很可能是因为您的某个字段在Linq To SQL设计器和实际数据库中具有不同的内容。

在我的例子中,这是因为其中一个字段在数据库中是可以为空的,而在设计器中是不可为空的,这使得它在设计器中可以为空,同时也解决了这个问题。

票数 58
EN

Stack Overflow用户

发布于 2013-03-05 02:49:58

我绕过了这个问题,确保在更新对象之前立即刷新它。我使用KeepChanges选项执行此操作。

代码语言:javascript
复制
    db.Refresh(System.Data.Linq.RefreshMode.KeepChanges, employee);
票数 18
EN

Stack Overflow用户

发布于 2010-11-02 20:33:34

问题也可能仅仅是表的DBML定义与数据库定义的状态不一致。我只是从数据库中删除了DBML模型,并将其重新插入,它就起作用了。

希望这对某些人有帮助。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/805968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档