您的位置:首页 > 产品设计 > UI/UE

[System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException]: {"对象的当前状态使该操作无效。"}

2011-03-23 11:25 477 查看
背景:用Linq to sql 开发系统,两个父子关系的表,例如A表和B表,B表中含有A表的主键A_ID作为B表的外键,如果B表中的A_ID时,使用了如下的写法:

MyDataContext db = new MyDataContext();
var b1 = (from b in db.B where b.ID == 6 select b).Single();
b1.A_ID = 5;
db.SubmitChanges();
这样写的话,将会得到以下错误:



“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

对象的当前状态使该操作无效。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException: 对象的当前状态使该操作无效。

原因在于这种写法破坏了ORM的关联结构,应该改写为如下代码:

MyDataContext db = new MyDataContext();
var b1 = (from b in db.B where b.ID == 6 select b).Single();
b1.A = (from a in db.A where a.ID == 5 select a).Single();
db.SubmitChanges();

参考网址:http://blog.miniasp.com/post/2008/08/Operation-is-not-valid-due-to-the-current-state-of-the-object.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐