如何在 Entity Framework Core 中删除多行? [复制]

2024-03-19

我需要使用 Entity Framework Core 从数据库中删除多行。

此代码不起作用:

foreach (var item in items)
{
    myCollection.Remove(item);
}

因为我在第一个对象之后收到错误“InvalidOperationException:集合已修改;枚举操作可能无法执行”。换句话说,.Remove仅删除一个对象。

Entity Framework Core 没有.删除范围,所以我不知道如何执行此操作。

为了保持与各种数据库提供程序的最大兼容性,我宁愿不调用 context.Database.ExecuteSqlCommand("delete fromphysical_table where...")。有合适的解决方案吗?谢谢!


因为我在第一个对象之后收到错误“InvalidOperationException:集合已修改;枚举操作可能无法执行”。换句话说,.Remove 仅删除一个对象。

这与 EF Core 无关,而且,是的,.Remove()只删除一个对象。但是,您正在尝试修改正在迭代的集合。那里有办法做到这一点 https://stackoverflow.com/questions/17767161/possible-to-modify-a-list-while-iterating-through-it,但这不是一条好路。

Entity Framework Core 没有 .RemoveRange,所以我不知道如何执行此操作。

肯定至少有几种简单的方法可以在 EF Core 中删除多条记录。而且,EF Core 确实有一个RemoveRange()方法 - 这是一个方法DbSet<TEntity>, see 在 API 文档中 https://learn.microsoft.com/en-us/ef/core/api/microsoft.entityframeworkcore.dbset-1(如上面的评论所述)。

有几个选择:

  1. If myCollection属于一个类型DbSet<TEntity>,像这样的简单调用就可以解决问题:

    _dbContext.MyEntities.RemoveRange(myCollection);
    _dbContext.SaveChanges();
    
  2. If myCollection实际上是您查询的实体的导航属性,您可以调用.Clear()在集合上而不是迭代和调用.Remove().

    var myParentEntity = _dbContext.MyParentEntities
                             .Include(x => x.MyChildrenEntities)
                             .Single(x => x.Id == id);
    myParentEntity.MyChildrenEntities.Clear();
    _dbContext.SaveChanges();
    

正如上面评论的那样,您的问题缺少很多上下文 - 应该发布更完整的代码。我只是在黑暗中尝试了一些方法来帮助您启动并运行 EF Core!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Entity Framework Core 中删除多行? [复制] 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • Haskell 中的基因编程

    有 GenProg http hackage haskell org package genprog http hackage haskell org package genprog 例如 但这仅涉及数值优化 在本例中找到描述数据的方程 但
  • 具有固定标题和固定列的可滚动 HTML 表格

    我想创建一个包含可滚动数据的表 我必须冻结表格的第一行和第一列 表格的第一行和第一列必须自动调整宽度和高度 以适应表格内容区域中的可变单元格尺寸 因为用户将添加具有可变内容量的新表格单元格 有人问了一个相关问题 如何在滚动时锁定表格的第一行
  • 当(深度)克隆时,使用 String.Copy 还是 str1 = str2?

    当 深度 克隆自定义对象时 我应该使用clone str1 String Copy obj str1 or clone str1 obj str1 我更喜欢后者 更短 更快 但它 安全 吗 我会指出这个线程 https stackoverf
  • ODP.NET 托管库确实可以解析别名,但 32 位库可以

    我的机器上安装了 32 位驱动程序 它们是由一些 DBA 安装和配置的 我编写了一个简单的脚本来测试驱动程序 大致如下 using DataTable table new DataTable using OracleConnection c
  • 我收到此错误“无模块:ngResource”

    尝试使用 Angular resource 但它返回的不是一种方法 浏览稀疏的文档 我发现了这一点 angular module productServices ngResource 您应该将其包含在您的应用程序模块中 公平地说 我把它放进
  • 如何根据定时器改变div的内容

    jquery 有没有办法根据计时器更改 div 的内容 假设我有提供 提示 的模块 提示内容应每 5 秒更改一次 Thanks 制定一系列提示 然后做一个interval5秒改变div的内容 我假设您想要随机提示 请参阅 jsFiddle
  • SVG 内的链接图像

    想象一下以下 SVG
  • Android NDK - NativeActivity 与 JNI 库

    两年前 我开发了一个增强现实框架android 7 闪电泡芙 http developer android com about versions android 2 1 html 由于 AR 应用程序是计算密集型任务 因此我开发了一个 JN
  • 我应该使用类还是字典?

    我有一个只包含字段而不包含方法的类 如下所示 class Request object def init self environ self environ environ self request method environ get R
  • 如何创建通用存储库?

    我想知道是否有人有关于制作通用存储库的任何好的教程 或者甚至可能是已经制作好的并且有详细记录的库 我当前正在使用 linq to sql 但它可能会发生变化 所以我不知道您是否可以创建一个通用存储库 如果我说切换到实体框架 则几乎不需要任何
  • 以编程方式展开/折叠 CoordinatorLayout 中的底部导航视图

    我有一个CoordinatorLayout其中包含一个BottomNavigationView and an AppBarLayout with a ToolBar在它里面 这BottomNavigationView不在里面AppBarLa
  • 部署不渲染 Kendo UI

    VS2012 asp net MVC4 c 带有 KendoUI 实现的互联网应用程序 最简单的说法是我的网站看起来像这样 开发机器上的本地 像这样部署 我检查了服务器 Kendo UI 论坛 所有论坛都指向图像丢失 我检查了甚至复制了我的
  • 授予 EC2 实例对 S3 存储桶的访问权限

    我想授予我的 ec2 实例对 s3 存储桶的访问权限 在此 ec2 实例上 启动了一个包含我的应用程序的容器 现在我没有获得 s3 存储桶的许可 这是我的存储桶政策 Version 2012 10 17 Id Policy146280822
  • 如何使用iPhone SDK下载文本文件?

    我是开发基于视图的 iPhone 应用程序的新手 我需要下载 这个 txt 文件来自互联网 并将其保存到应用程序的文档文件夹中 谁能简单地告诉我如何做到这一点 txt 文件很小 所以我不会 需要任何用户界面对象 Thanks Kevin N
  • 如何使用CSS仅在移动设备上显示文本?

    我有一个文本 在 div 中 显示在桌面和移动屏幕上 Expected 我希望文本仅显示在 media only screen and max width 768px How to 隐藏 div 与display none or 还有其他解
  • Django-rest-framework 多个 url 参数

    如何将 示例对象 映射到 url website com api
  • 编辑 PrimeNG 组件的 CSS

    我目前正在使用 Angular 4 Angular Materials 和 PrimeNG 组件开发用户界面 我正在处理的最新组件是来自 PrimeNG 的 MultiSelect 组件 https www primefaces org p
  • iOS 禁用横向 LaunchScreen.storyboard

    我有一个LaunchScreen storybaord显示徽标 文本 因此与方向无关 该应用程序始终以纵向启动 但它有某些允许横向模式的视图控制器 因此不能选择仅使应用程序纵向 我想要的是启动屏幕始终以纵向显示 因此 在应用程序启动期间将手
  • 通过模拟器发送电话号码

    我正在制作一个应用程序 我想检索设备电话号码并将其发送到服务器上 但我正在 Android 模拟器上测试这个应用程序 谁能告诉我如何在模拟器和实际设备中设置或获取电话号码 Thanks 如果我们使用电话管理器 我们可以在模拟器中获取电话号码
  • 如何在 Entity Framework Core 中删除多行? [复制]

    这个问题在这里已经有答案了 我需要使用 Entity Framework Core 从数据库中删除多行 此代码不起作用 foreach var item in items myCollection Remove item 因为我在第一个对象