我遵循了我在 Julie Lermans 的书 Programming Entity Framework: Dbcontext 中读到的 EF 存储库模式
我有一个名为 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;
}
这是否意味着即使我影响了客户,我仍然需要将收藏夹标记为已修改,以便跟踪和更新它们?我只是不认为我必须这样做。