我按照我的朱莉Lermans书编程实体框架阅读有关EF库模式:的DbContext实体框架的通用仓库 - 外键例外更新实体关系
我有具有多对多名为Customer的实体与实体收藏
这里关系是一个更新的一些示例代码,客户
customer.CustomerLocation_ID = 5;
customer.Favourites.clear();
customer.State = State.Modified;
customerRepository.InsertOrUpdate(customer);
插入然后将做到以下几点:
Entry(entity).State = EntityState.Modified;
foreach (var entity in this.ChangeTracker.Entries<IEntityState>())
{
IEntityState stateInfo = entity.Entity;
entity.State = StateHelpers.ConvertState(stateInfo.State);
}
后来总算:
context.SaveChanges();
一旦保存,我得到一个唯一的密钥异常的收藏,因为收藏夹名称是唯一的。但我没有在收藏夹中添加任何内容。
当我删除.clear()行时,一切都很好保存。
更新:
我在这段代码只是尝试一些东西,现在的作品加入。
foreach (var fav in customer.Favourites)
{
fav.State = State.Modified;
}
这是否意味着即使我正在影响客户,我仍然需要将收藏夹标记为已修改,以便跟踪和更新它们?我只是不认为我必须这样做。
您正在对您的客户进行一系列关于已清除收藏夹的删除操作(实际上,您是在删除与此客户关联的所有收藏夹链接记录)。你确定这是预期的效果吗? – Tejs
这就是主意。我想删除所有客户的最爱。现在就去更新这个问题。 – LivingOnACloud