更新数据
使用SQLBuilder
常规更新一条数据
普通的update 语句
c#
cc += kit.setTable("ZH_PortCell")
.set("PC_X", cell["x"].ToString())
.set("PC_Y", cell["y"].ToString())
.set("PC_W", cell["w"].ToString())
.set("PC_H", cell["h"].ToString())
.where("ZH_PortCellOID", fk)
.doUpdate();连表更新
创建并执行 update from 语句
TIP
注意,sqlserver下 mysql下的 updatefrom 语句的语法有所区别,因mysql只支持对 inner join进行更新,sqlserver允许任意的join
c#
kit.set("C_Year", "2022")
.set("C_EndTime", DateTime.Now)
.set("C_TrainType", "p.Po_TrainType", false)
.set("C_Days", "p.Po_Day", false)
.set("C_PlanTotal", "(select SUM(d.Pa_PlanTotal) from PX_PostClassDe as d where PX_Class_FK=PX_ClassOID)")
.setTable("c")
.from("PX_Class as c left join PX_PostClass p on c.PX_PostClass_FK=p.PX_PostClassOID")
.where("c.PX_ClassOID in ('" + newDassOIDs + "')")
.doUpdate();使用仓储
单个实体更新
更新一条数据,提交到数据库
c#
_sysRegionRep.Update(new SysRegion());多个实体更新
批量更新数据,提交到数据库
c#
_sysRegionRep.UpdateRange(new SysRegion());使用SQLClip
- 依赖相关实体类
- 使用函数表达式构造条件
- 无魔法字符串(SQL)
基础用法
c#
var cc= clip.setTable<UCMLClassDataSet>(out var u)
.set(() => u.ChineseName, "caption")
.set(() => u.ClassName, "name")
.where(() => u.UCMLClassOID, 1)
.doUpdate();以上案例生成的SQL如下:
sql
update UCMLClassDataSet set ChineseName = 'caption',ClassName = 'name' where ( a.UCMLClassOID = 1 )快捷用法
c#
var demoOID = Guid.Empty.ToString();
var cc = kit.modifyBy<HHDutyItem>((c, d) =>
{
c.set(() => d.Di_Name, "name")
.set(() => d.Di_Code, "001")
.where(() => d.HH_DutyItemOID, demoOID);
});