c# – 附加具有关联的实体以进行修改

我会修改带有关联集合的分离实体,例如:

人和地址是POCO.

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

我是否要手动跟踪我的收藏?

编辑

分离的POCO的同步必须是手动的… EF不是用于合并集合的解决方案(导航属性和关系):(

我比较了当前和原始的集合,我发现了差异

最佳答案 如果您使用的是Entity Framework,我假设您将其作为问题的标记列出,那么对象只会在实体上下文生成它们时跟踪它们的更改.

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();

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

点赞