【问题标题】:Updating one-to-many relationships without SaveChanges在不使用 SaveChanges 的情况下更新一对多关系
【发布时间】:2013-02-12 20:31:08
【问题描述】:

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

例如,如果我的老师 mrX 有一个虚拟的 ICollection 学生,包括 littleJohnny

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. 您是否使用 EF 代码优先? 2. 当你使用 ViewModel 时,你说的是 WPF 还是 Silverlight?
  • 抱歉 - 应该指定,是的,我首先使用代码。至于视图模型,我主要使用 mvvm 和 WPF,但实际上 b 视图模型是指从实体映射的东西,例如使用 Automapper 到 POCO

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


【解决方案1】:

尝试拨打context.ChangeTracker.DetectChanges()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多