实体框架 - 有效删除所有子实体而不加载它们

Joh*_*tos 7 .net c# vb.net entity-framework

我对Entity Framework完全不熟悉,所以请原谅我,如果我的逻辑偏差/这是事情已经发挥作用的方式,但我正在开发一个应用程序,其中:

  1. 我将父信息存储在一个主键=的表中 ParentId
  2. 对于每一个ParentId,我将数千条记录存储在父表中具有一对多外键关系的子表中.

因此,如果父母的信息发生变化(这可能经常发生),我想要做的是让我的程序执行相当于:

DELETE FROM ChildTable WHERE ParentId = 'xx'
Run Code Online (Sandbox Code Playgroud)

在使用相同ParentId的新/更新值更新子表之前.


从我所看到的,我这样做的方式是:

  • 使用ctx.Database.ExecuteSqlCommand()概念类型输入实际的SQL命令
  • 在某种程度上,实际上循环遍历子元素并在更新数据库上下文之前将它们设置为删除(这似乎是非常低效的,因为我猜它必须从数据库中取出它们才能做到这一点和我想做的就是删除所有内容).

以最有效的方式在EF中执行此操作的正确方法是什么?

Mab*_*lah 3

批量删除和任何批量更新语句是对默认实体框架行为的限制。一种解决方法是使用此扩展库,该扩展库允许执行这些批量命令,而无需将实体拉入内存以删除它们。

https://github.com/loresoft/EntityFramework.Extended。该网站上还有很好的文档,介绍如何使用各种功能。