2013-02-12 54 views
0

当对上下文的SaveChanges()方法进行调用时,更改另一侧的关系会自动更新。在不使用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. 有什么办法没有实体的数据保存到数据库中框架4.3更新这些关系, 5.0?

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

+0

夫妇的问题:1,你使用EF代码优先? 2.当你使用ViewModel时,你在说WPF还是Silverlight? – 2013-02-12 03:00:52

+0

对不起 - 应该指定,是的,我先使用代码。至于视图模型,我主要使用mvvm和WPF,但实际上b视图模型我指的是从实体映射的东西,比如使用Automapper到POCO – Brent 2013-02-12 04:39:41

回答

1

尝试调用context.ChangeTracker.DetectChanges()

如果不工作,然后你的相关实体尚未正确初始化

相关问题