在没有SaveChanges的情况下更新一对多关系

时间:2013-02-12 02:00:51

标签: c# entity-framework one-to-many savechanges

当调用上下文的SaveChanges()方法时,更改另一侧的关系会自动更新。

例如,如果我有一位老师mrX,其中包括littleJohnny等虚拟ICollection学生

mrX.Students.Remove(littleJohnny);
Debug.Assert(littleJohnny.Teacher!=null); //assert should pass
context.SaveChanges();
Debug.Assert(littleJohnny.Teacher==null); //assert should pass

mrX.Students.Add(littleJohnny);
context.SaveChanges();//revert to previous state

littleJohnny.Teacher=null;
Debug.Assert(mrX.Students.Contains(littleJohnny)); //assert should pass
context.SaveChanges();
Debug.Assert(!mrX.Students.Contains(littleJohnny)); //assert should pass
  1. 有没有办法在不将数据保存到Entity Framework 4.3和5.0中的数据库的情况下更新这种关系?

  2. 在另一种情况下,如果我有一个映射到上述实体的ViewModel,我是否有一种简单的方法可以复制这种EF行为 - >也就是说,跟踪关系并更新调用方法的关系?

1 个答案:

答案 0 :(得分:1)

尝试拨打context.ChangeTracker.DetectChanges()

如果不起作用,那么您的相关实体尚未正确初始化