Winforms context.savechanges影响-Telerik EF概念

Winforms context.savechanges影响-Telerik EF概念,winforms,entity-framework,telerik-open-access,Winforms,Entity Framework,Telerik Open Access,我遇到的情况如下 我有两个名为parent和child的表 在从数据库中获取数据时,我得到了1行针对父对象,2行针对子对象 在这个阶段,如果我​创建新的子对象并将其添加到上下文中,然后应用保存更改,以便​现在,我的数据库包含1行针对父对象,3行针对子对象,但我的上下文仅包含2行针对子对象 我需要刷新整个上下文还是仅刷新该子级才能在上下文中获取最新的数据库子级记录,以便在整个操作过程中使用新添加的子级执行其他操作 Parent objparent = context.Parent( p =>

我遇到的情况如下

我有两个名为parent和child的表

在从数据库中获取数据时,我得到了1行针对父对象,2行针对子对象

在这个阶段,如果我​创建新的子对象并将其添加到上下文中,然后应用保存更改,以便​现在,我的数据库包含1行针对父对象,3行针对子对象,但我的上下文仅包含2行针对子对象

我需要刷新整个上下文还是仅刷新该子级才能在上下文中获取最新的数据库子级记录,以便在整个操作过程中使用新添加的子级执行其他操作

Parent objparent = context.Parent( p => p.id = 4);
objparent.count(); //1
objparent.Child.count();//2

Child objchild = new Child();
objchild.name = "abc";
objchild.parentid = 4;

context.add(objchild);
context.savechanges();
//do i need to refresh whole context to have newly added child under given parent
//or i should only fetch all childs against parent id 4 and re-attach them to context

对于未来的读者,我想将这个问题标记为已解决,感谢Damyan Bogoev的指导

我观察到实体框架功能,即通过调用context.savechanges()将新记录保存到数据库中时,当前上下文将自动获取该记录及其标识id(序列/新插入的主键),并将状态设置为“托管加载”


这意味着我可以在当前上下文中使用新插入的行,而无需重新获取/刷新我的上下文。

在这种情况下,您应该使用托管导航属性@DamyanBogoev:Hi sir感谢您的回复,是的,我已经在使用托管导航属性。我在问如果我在这里保存更改,我将如何使用新输入的记录更新我的上下文,即在将child更新为上下文中的2行之前,更新之后我希望在该上下文中有3行,我是否应该编写objParent.childs=context.child(c=>c.parentID=4);要使用新输入的记录填充给定上下文,可以直接将子对象添加到父子集合,并将更改提交到数据库:child objchild=new child();objchild.name=“abc”;objparent.Child.Add(objchild);SaveChanges();设置父id和在数据库中存储子对象也应该起作用。看起来您的元数据在父子关联方面的配置有误。