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