将子项添加到父实体而不加载完整的子图

时间:2013-08-05 15:28:24

标签: asp.net vb.net visual-studio-2012 entity-framework-4 entity-relationship

我想知道是否有任何方法可以使用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'孩子和父母之间的映射表...所以它不应该需要整个孩子的图表。

我是对的吗? 有可能吗?

1 个答案:

答案 0 :(得分:2)

您可以通过创建“存根实体”并将其附加到上下文来完成此操作。使用C#语法的示例:

var child = new Child { ID = aChildId };
mContext.Children.Attach(child);
oParent.Children.Add(child);