如何在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
相关产品推荐
相关产品推荐

