C# 使用Automapper保存递归结构时违反主键约束

C# 使用Automapper保存递归结构时违反主键约束,c#,automapper,automapper-collections-ef-core,C#,Automapper,Automapper Collections Ef Core,我犯了个错误 违反主键约束 打电话的时候 _dbContext.Set<T>().Persist(_mapper).InsertOrUpdate(typeof(Category), model); 我已经添加了Automapper.Collections和Automapper.EntityFrameworkCore.Collection,并在我的映射器配置中包含了这些配置 cfg.AddCollectionMappers(); cfg.UseEntityFrameworkCoreM

我犯了个错误

违反主键约束

打电话的时候

_dbContext.Set<T>().Persist(_mapper).InsertOrUpdate(typeof(Category), model);
我已经添加了
Automapper.Collections
Automapper.EntityFrameworkCore.Collection
,并在我的映射器配置中包含了这些配置

cfg.AddCollectionMappers();
cfg.UseEntityFrameworkCoreModel<AKSContext>();
在插入树的第一次保存时,一切正常,在第二次保存时,第一个节点没有任何子节点,并且该节点更新正常,但第二个节点会抛出第一个子节点主键冲突的异常


换句话说,它能够检测到它是顶层的更新,但它假定它是子级的插入。我想我遗漏了什么。

这可能是答案,也可能只是一个解决办法,但我将树展平,只要我以正确的顺序保存它,以避免对我有效的外键冲突。仍然很好奇是否有更好的方法。虽然将树展平在根对象级别解决了这个问题,但我现在在根对象的集合中遇到了同样的问题。编辑问题以添加我现在获得错误的列表。
cfg.AddCollectionMappers();
cfg.UseEntityFrameworkCoreModel<AKSContext>();
cfg.EqualityComparison((mod, ent) => (mod.CategoryId == ent.CategoryId && mod.ProjectId == ent.ProjectId))