在不保存更改的情况下更新一对多关系

本文关键字:更新 一对多 关系 情况下 保存更改 | 更新日期: 2023-09-27 17:58:55

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

例如,如果我有一位老师mrX,他有一个虚拟的学生集合,其中包括小Johnny

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. 是否有任何方法可以在不将数据保存到实体框架4.3和5.0中的数据库的情况下更新此类关系?

  2. 在另一个场景中,如果我有一个映射到上述实体的ViewModel,有没有一种简单的方法可以复制这个EF行为->,即跟踪关系并在调用方法时更新关系?

在不保存更改的情况下更新一对多关系

尝试调用context.ChangeTracker.DetectChanges()

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