我想知道是否有任何方法可以使用EF4实现这样的目标:
我想做点什么:
1. | 'Get Parent
2. | Dim Parent as oParent = mContext.GetParent(parentId)
3. |
4. | 'Link a child without loading it entirely, only using his ID
5. | oParent.Children.AddOnlyUsingChildId(aChildId) 'Or maybe EntityKey?
6. |
8. | 'Apply Changes (Save)
7. | mContext.SaveChanges()
这一切都是因为,我不想每次都要求服务器来获取整个子实体,无论如何,我只有孩子的ID(来自复选框列表)。这是循环中的一部分循环,并且可能必须为每个第一级循环加载数百个子节点。在我看来,有可能这样做,因为实体图应该知道当保存父和N..N
关系时,他应该只在DB中插入'Parrent.nId和Child.nId'孩子和父母之间的映射表...所以它不应该需要整个孩子的图表。
我是对的吗? 有可能吗?
答案 0 :(得分:2)
您可以通过创建“存根实体”并将其附加到上下文来完成此操作。使用C#语法的示例:
var child = new Child { ID = aChildId };
mContext.Children.Attach(child);
oParent.Children.Add(child);