c# - EF Extensions BulkDelete 方法不使用外键删除
问题描述
我想删除与其他表有外键关系的实体。
但我得到一个错误:
MERGE 语句与 REFERENCE 约束冲突
任何建议如何使它工作?
context.BulkDelete(entities);
解决方案
DELETE CASCADE
不幸的是,出于安全原因,除非您启用了外键,否则无法使用 EF 扩展自动删除外键行。
如果你想删除,你需要先自己删除外键数据:
context.BulkDelete(entities.Select(x => x.ForeignKeyNavigation);
context.BulkDelete(entities);
或者
context.MyForeignKeySets.DeleteRangeByKey(entities.Select(x => x.ForeignKeyID).Distinct());
context.BulkDelete(entities);
或者
context.MyForeignKeySets.WhereBulkContains(entities.Select(x => x.ForeignKeyID).Distinct()).DeleteFromQuery();
context.BulkDelete(entities);
可能还有其他方法可以做到这一点,但在我们的库中没有自动的方法来做到这一点。
推荐阅读
- r - 新手有一个关于数据框列名的问题
- linux - 在 Linux 上的 AWS Elastic Beanstalk 中部署多个 ASP.NET Core 应用程序(使用 Kestrel 服务器)
- python - win10toast python在通知中心更改程序标题
- docker - 在撰写文件中设置 docker 时无法连接到 selenium/chrome
- flask - Apache 2 上的 Flask 应用程序提供内部服务器错误
- javascript - TypeScript 数组对象过滤器 - 动态过滤条件,Search Refiners Sharepoint
- c# - 为什么在尝试将数据插入行时出现 SQL 语法错误?
- google-chrome - 如何解决chrome devtools的计时问题?
- c++ - 如何声明/定义具有与给定函数指针相同的返回和参数类型的函数?
- javascript - 什么软件管理/拥有“registerDomMutation”?