2011-03-07 55 views
4

我将修改与关联收集的分离实体,例如:附加实体和修改关联

人员和地址是POCO。

当我附加实体并保存更改时,未检测到收集更改,如何更新带地址的人(添加和删除的项目)?

手动跟踪我的收藏吗?

编辑

分离POCO的同步必须手动... EF确实收集的目的不是合并方案(导航属性和关系):(

我比较当前和原始的收藏并且我检测到差异

+1

保存更改时,[更新的关系可能重复EF4 POCO对象](http://stackoverflow.com/questions/3635071/update-relationships-when-saving-changes-of-ef4-poco-objects) – 2011-03-07 18:01:23

+0

谢谢你这个链接它是非常有帮助 – rad 2011-03-09 10:03:43

+0

你可以upvote张贴如果你喜欢它。 – 2011-03-09 10:17:51

回答

1

如果您使用的是实体框架,我认为您是因为您将其列为问题上的标记,那么对象仅在实体上下文生成它们时跟踪其更改

User someUser = dbEntities.Users.Single(x => x.Username == "test"); 
someUser.Name = "changed name"; 
db.SaveChanges(); 

该代码将检测到更改并将其保留。

User someUser = new User() 
{ 
    Username = "test" //assuming there is already user called test in the database. 
} 

以这种方式创建用户将不允许EF上下文检测更改。相反,您需要从数据库加载实体,更新它,然后保留更改。

string username = "test"; 
User someUser = db.Users.Single(x => x.Username == username); 
TryUpdateModel(someUser, valueProvider); //valueProvider is usually a form collection of some sort, but could be anything that implements IValueProvider. 
db.SaveChanges(); 

这将允许您拉入实体,更新它并保存更改。