小编tan*_*a_s的帖子

如何在 EF Core 中进行深度克隆/复制

我想做的是School在 EF Core 中复制/复制我的对象及其所有子项/关联

我有如下内容:

var item = await _db.School
.AsNoTracking()
.Include(x => x.Students)
.Include(x => x.Teachers)
.Include(x => x.StudentClasses)
.ThenInclude(x => x.Class)
.FirstOrDefaultAsync(x => x.Id == schoolId);
Run Code Online (Sandbox Code Playgroud)

我一直在阅读深度克隆,似乎我应该能够只添加实体......所以几乎是下一行。

await _db.AddAsync(item);
Run Code Online (Sandbox Code Playgroud)

然后 EF 应该足够聪明,可以将该实体添加为新实体。但是,马上我就遇到了一个冲突,说“id {schoolId} 已经存在”并且不会插入。即使我重置了我尝试添加的新项目的 Id,我仍然会与学校 itam 的协会/孩子的 Id 发生冲突。

有没有人熟悉这个以及我可能做错了什么?

deep-copy entity-framework-core ef-core-2.0

7
推荐指数
1
解决办法
2188
查看次数