积极答复者
Linq 多层结构 更新对象的问题

问题
-
我在服务层收到一个对象 entityset<childtable> 子列表,如果是调用
DataContext.parenttbl.InsertOnSubmit(t);
DataContext.SubmitChanges();
可以将t中包含的childtable 子项全部插入到数据库中
但如果我将对象使用
DataContext.parenttbl.attach(t,true);
DataContext.SubmitChanges();
只能修改parent对象的值,对于子项不做任何反应
有什么好的办法可以直接将子项更新,插入,删除,对应到数据库中?
如果子项还有相关的再下一级别的子表能一起处理么?
答案
-
恩~是没有状态的~所以要自动判断可能需要查询数据库消耗一定的资源~也许是这样的考虑所以要显示地attach
宠辱不惊,看庭前花开花落。去留无意,望天上云卷云舒。- 已标记为答案 微软中文技术论坛Moderator 2009年6月30日 3:49
全部回复
-
http://msdn.microsoft.com/zh-cn/library/bb548978.aspx
这上面说若要更新子集合的成员,必须显式调用 Attach,并指定该实体。
宠辱不惊,看庭前花开花落。去留无意,望天上云卷云舒。 -
"调用 SubmitChanges 后,子集合的成员将被置于 Unmodified 状态。若要更新子集合的成员,必须显式调用 Attach,并指定该实体。 "
这句话什么意思?子集合成员直接调用attach(childlist,true),因为子集合成员有增加删除,和更改,还是得自己想个机制进行跟踪吧,
关键一个级别还好办,关键可能子集合的对象还有再下一级别的对象的集合成员。
如何处理? -
恩~是没有状态的~所以要自动判断可能需要查询数据库消耗一定的资源~也许是这样的考虑所以要显示地attach
宠辱不惊,看庭前花开花落。去留无意,望天上云卷云舒。- 已标记为答案 微软中文技术论坛Moderator 2009年6月30日 3:49