EF Core 5,删除多对多关系
EF Core 5, delete a relation many-to-many
我有一个由 EF Core 5 提供支持的 api,我正在处理多对多关系(艺术家 和 版本 tables).
post 动作甚至可以正常工作,例如艺术家,我决定不添加发送现有版本的 Guid 的可能性,但只添加将同时创建的完整版本对象。
那么我要如何 link 艺术家到现有的版本?我试图在 put 动作中这样做,方法是在 artistD 内部发送一个 releaseDto 列表,只包含 Guids。
这可以很好地添加新的关系,ArtistRelease 连接 table 确实更新了但是 我没有指定的 Guids 没有被删除,我不能删除关系,除非我要删除艺术家或专辑。
所以我的问题是如何删除关系?
你能帮我一些忙吗?
var releases = Repository.Release.GetReleases(artistForUpdateDto.Releases, trackChanges: false);
if(releases.Count() != artistForUpdateDto.Releases.Count())
{
Logger.LogInfo($"Some release ids are not valid in the ArtistForUpdateDto object");
return NotFound();
}
Mapper.Map(artistForUpdateDto, artist);
artist.Releases = releases.ToList();
Repository.Save();
我找到了一个解决方案,我只需要通过“包含”获取艺术家以获取其版本
RepositoryContext.Set<T>().Where(expression).Include(includeExpression)
如果我用空列表保存艺术家,连接 table 将更新 :)
我有一个由 EF Core 5 提供支持的 api,我正在处理多对多关系(艺术家 和 版本 tables).
post 动作甚至可以正常工作,例如艺术家,我决定不添加发送现有版本的 Guid 的可能性,但只添加将同时创建的完整版本对象。
那么我要如何 link 艺术家到现有的版本?我试图在 put 动作中这样做,方法是在 artistD 内部发送一个 releaseDto 列表,只包含 Guids。
这可以很好地添加新的关系,ArtistRelease 连接 table 确实更新了但是 我没有指定的 Guids 没有被删除,我不能删除关系,除非我要删除艺术家或专辑。
所以我的问题是如何删除关系?
你能帮我一些忙吗?
var releases = Repository.Release.GetReleases(artistForUpdateDto.Releases, trackChanges: false);
if(releases.Count() != artistForUpdateDto.Releases.Count())
{
Logger.LogInfo($"Some release ids are not valid in the ArtistForUpdateDto object");
return NotFound();
}
Mapper.Map(artistForUpdateDto, artist);
artist.Releases = releases.ToList();
Repository.Save();
我找到了一个解决方案,我只需要通过“包含”获取艺术家以获取其版本
RepositoryContext.Set<T>().Where(expression).Include(includeExpression)
如果我用空列表保存艺术家,连接 table 将更新 :)