首页 > 解决方案 > EF Extensions BulkDelete 方法不使用外键删除

问题描述

我想删除与其他表有外键关系的实体。

但我得到一个错误:

MERGE 语句与 REFERENCE 约束冲突

任何建议如何使它工作?

context.BulkDelete(entities);

标签: c#entity-frameworkentity-framework-extensions

解决方案


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);

可能还有其他方法可以做到这一点,但在我们的库中没有自动的方法来做到这一点。


推荐阅读