设置 WHERE 条件以在 ExecuteSqlCommand() 中使用 Ids.Contains()

2024-01-25

我正在使用实体框架,并且想要执行批量更新。加载每一行、更新这些行,然后将它们保存回数据库的效率太低了。

所以我更喜欢使用DbContext.Database.ExecuteSqlCommand()。但是,如何使用此方法来更新 ID 列表中包含的 ID 的所有行呢?

这是我到目前为止所拥有的。

IEnumerable<int> Ids;
DbContext.Database.ExecuteSqlCommand("UPDATE Messages SET Viewed = 1 WHERE Id IN (@list)", Ids);

我意识到我可以使用正确的查询手动构建一个字符串,但我更愿意按照通常建议的方式传递参数。

有什么办法可以实现这一点吗?


您仍然可以构建参数并将它们包含在参数化查询中。

生成的查询看起来像这样

UPDATE Messages SET Viewed = 1 WHERE Id IN (@p0, @p1, @p2, ..., @pn)

所以给出

IEnumerable<int> Ids;

Then

var parameters = Ids.Select((id, index) => new SqlParameter(string.Format("@p{0}", index), id));
var parameterNames = string.Join(", ", parameters.Select(p => p.ParameterName));
var query = string.Format("UPDATE Messages SET Viewed = 1 WHERE Id IN ({0})", parameterNames);

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

设置 WHERE 条件以在 ExecuteSqlCommand() 中使用 Ids.Contains() 的相关文章

随机推荐

  • 模块中的全局变量范围

    以下是我的文件和输出 我想做的就是获得价值x after func1 as 20 我已经参考过这个答案 https stackoverflow com questions 15595393 python global variable sc
  • 如何解释elf符号表部分的st_info字段

    The man page http manpages ubuntu com manpages xenial man5 elf 5 html有这样说 st info This member specifies the symbol s typ
  • 数组应该被视为水平结构还是垂直结构

    我正在做一些 Matlab 作业 在概念化它处理矩阵的方式时遇到问题 在 Matlab 中 矩阵的地址为d row col format 我已经编程了一段时间 并且总是倾向于将一维数组视为水平结构 其中第二维从下方延伸 从计算机的角度来看
  • Laravel-mix Webpack 公共路径

    所以我使用 Laravel Mix 并在 Webpack 中设置了代码分割 我正在为我的 Vue 组件使用动态导入 如下所示 Vue component UserMenu gt import components UserMenu vue
  • 将参数从 udev 规则文件传递给 shell 脚本

    在规则文件中 通过传递参数 LABEL 和 DEVNAME 来执行脚本以进行安装 ACTION add RUN appmount scripts usb mount sh E ID FS LABEL E DEVNAME 在 usb moun
  • 表单在 while 循环期间冻结

    我有一段代码可以检查某个应用程序是否正在运行 while Process GetProcessesByName notepad Length 0 System Threading Thread Sleep 1000 它将检查用户是否正在运行
  • 为什么Intellij IDEA不显示

    Windows 8 设置中的所有内容均设置为UTF 8 例如 Intellij IDEA 显示中文字符 这意味着它确实设置为 Unicode 字符集 但它显示一个框而不是 MATHEMATICAL FRAKTUR CAPITAL G 符号
  • Makefile 通用模式规则——来自 xyzzy.ext0 的 xyzzy-en_US.ext2

    我无法找到一种方法来使用 make 为以下类型的生产定义通用模式规则 require xyzzy en US ext2 from xyzzy ext0 via xyzzy ext1 这有效 all xyzzy en US ext2 to b
  • 检查数据表是否为空

    下面的代码是我用来从 sql 数据库检索用户信息的代码 string userName LoginUser UserName string password LoginUser Password string comm SELECT Use
  • 通过调试或发布过滤 androidDependency

    我的应用程序的依赖关系尽可能简单 我只是implement支持库 现在我想知道我的应用程序中的依赖关系 dependencies implementation fileTree dir libs include jar implementa
  • 异常代码:KERN_PROTECTION_FAILURE 位于 0x00000000 错误

    Exception Type EXC BAD ACCESS SIGBUS Exception Codes KERN PROTECTION FAILURE at 0x00000000 什么是内核保护错误 在哪里可以清楚地找到有关异常类型和代码
  • RichEdit 中拦截 TAB 键

    这里有很多类似的问题 但我找不到我的问题的答案 I have a TRichEdit and want to implement some custom behaviour when the user presses Tab I set t
  • jQuery UI 自动完成,没有结果时显示一些内容

    我有以下代码 Autocomplete search shop search autocomplete source minLength 1 select function event ui append place ui item nam
  • Android 通知 .addAction 在 api 23 中已弃用

    在通知中添加操作的正确方法是什么API 23 since addAction int icon CharSequence title PendingIntent intent 已弃用 找不到例子 谢谢 我的旧动作 addAction R d
  • 管理游戏中的碰撞检测

    所以我的问题不是关于如何进行碰撞检测 而是更广泛的 哪些代码应该拥有碰撞检测 我过去写过一些游戏 相对简单的 2D Flash 游戏 这让我想到哪些代码应该拥有碰撞检测 让我澄清一下 假设在游戏中我有一群敌人和玩家发射的一组射弹 所以在过去
  • 在列表视图中显示单列并包含两组

    我有客户表 其中有列 customer id customer name 我有另一个表称为地址 地址ID 地址文本 现在我想像这样显示客户姓名和地址文本 customers customer name 1 custom
  • 如何确定控件的可见性?

    我有一个TabControl http msdn microsoft com en us library system windows forms tabcontrol aspx其中包含多个选项卡 每个选项卡都有一个UserControl
  • SameSite 属性破坏 SAML 流程

    Chrome 80 将引入一个新属性 SameSite 严格 仅附加 同一站点 请求的 cookie Lax 使用安全的 HTTP 方法 例如 发送 同一站点 请求的 cookie 以及 跨站点 顶级导航 获取头部选项跟踪 无 为所有 同一
  • Java 中的过早优化:何时使用“x = foo.getX()”与简单的“foo.getX()”

    当我发现自己多次调用同一个 getter 方法时 这应该被视为一个问题吗 始终 分配给局部变量并仅调用一次是否更好 我确信答案当然是 视情况而定 我更关心更简单的情况 其中 getter 只是 传递私有变量的值 类型方法 即不涉及昂贵的计算
  • 设置 WHERE 条件以在 ExecuteSqlCommand() 中使用 Ids.Contains()

    我正在使用实体框架 并且想要执行批量更新 加载每一行 更新这些行 然后将它们保存回数据库的效率太低了 所以我更喜欢使用DbContext Database ExecuteSqlCommand 但是 如何使用此方法来更新 ID 列表中包含的