背景:用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();

这样写的话,将会得到以下错误:

 

 

原因在于这种写法破坏了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

相关文章: