c# - EF Core 5,删除多对多关系
问题描述
我有一个由EF Core 5提供支持的 api,并且我正在处理多对多关系(艺术家和发布表)。
即使这样,post 操作也能正常工作,以艺术家为例,我决定不添加发送现有版本的 Guid 的可能性,而只添加将同时创建的完整版本对象。
那么我如何将艺术家链接到已经存在的版本呢?我试图在 put 动作中这样做,方法是在 artistD 内部发送一个 releaseDto 列表,只列出竞争的 Guid。
这可以很好地添加新的关系,ArtistRelease 联结表确实已更新但我未指定的 Guid 未删除,我无法删除关系,除非我删除艺术家或版本。
所以我的问题是如何删除关系?
你能给我一些帮助吗?
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)
如果我用空列表保存艺术家,连接表将被更新:)
推荐阅读
- android - Activity 函数在我们的 MainActivity 中是如何工作的
- reactjs - 矩形移动到 React Konva 中的原始绘制位置
- php - 购物车系统连接到数据库
- c++ - 多变量 randn 输出的解释
- php - 一个正常工作的网站突然开始抛出连接被拒绝
- python - Flask WTForms:提交后如何刷新页面
- payment-gateway - Cybersource 支付网关以低于 2000 美元的价格交易失败
- vega - 在 Vega-lite 或 Vega-embed 中缓存数据集
- python-3.x - Chatterbot 动态训练
- android - Calling setLayoutParams() in onLayout method of custom view group does nothing