You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在linq2db中实现字段自更新?含SQL语句转换需求

将SQL更新语句转换为linq2db实现

原SQL语句:

update myTable 
    set myField1 = myField1 + 1 
where myField2 = 'xyz'

对应linq2db的实现有两种常见写法:

写法一:链式调用风格

// 假设db是你的linq2db数据上下文实例
db.MyTable
  .Where(t => t.MyField2 == "xyz")
  .Set(t => t.MyField1, t => t.MyField1 + 1)
  .Update();
  • Where方法对应SQL的WHERE条件,筛选出myField2等于'xyz'的记录
  • Set方法指定要更新的字段myField1,并设置其值为自身加1的计算结果
  • 最后调用Update()执行更新操作

写法二:直接构造更新对象风格

// 假设db是你的linq2db数据上下文实例
db.Update(
  () => new MyTable
  {
    MyField1 = Sql.Ext.Add(MyTable.MyField1, 1).ToValue()
  },
  () => MyTable.MyField2 == "xyz"
);
  • 第一个参数构造更新对象,通过Sql.Ext.Add方法实现字段自增1的计算(也可以直接用MyTable.MyField1 + 1,部分场景下Sql.Ext能更精准映射SQL函数)
  • 第二个参数是更新的筛选条件,对应SQL的WHERE子句

内容的提问来源于stack exchange,提问作者fedrok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:06:18