为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过分配新集合来更新多对多集合?

如何通过分配新集合来更新多对多集合?

C#
翻阅古今 2021-07-01 09:03:47
在实体框架核心 2.0 中,我在Post和之间有很多关系Category(绑定类是PostCategory)。当用户更新 a 时Post,整个Post对象(及其PostCategory集合)被发送到服务器,在这里我想重新分配新收到的集合PostCategory(用户可以通过添加新类别和删除一些类别来显着更改此集合)。我用来更新该集合的简化代码(我只是分配了全新的集合):var post = await dbContext.Posts    .Include(p => p.PostCategories)    .ThenInclude(pc => pc.Category)    .SingleOrDefaultAsync(someId);post.PostCategories = ... Some new collection...; // <<<dbContext.Posts.Update(post);await dbContext.SaveChangesAsync();这个新集合的对象与先前集合中的对象 ID 相同(例如,用户删除了一些(但不是全部)类别)。由于,我得到一个例外:System.InvalidOperationException:无法跟踪实体类型“PostCategory”的实例,因为已跟踪具有相同 {'CategoryId', 'PostId'} 键值的另一个实例。如何有效地重建新集合(或简单地分配一个新集合)而不会出现此异常?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信