Skip to content

Update data

SQLBuilder

Single-row update

Standard 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();

Join update

UPDATE ... FROM style.

TIP

SQL Server vs MySQL: MySQL only supports UPDATE with INNER JOIN; SQL Server allows broader join forms.

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();

Repository

One entity

c#
_sysRegionRep.Update(new SysRegion());

Many entities

c#
_sysRegionRep.UpdateRange(new SysRegion());

SQLClip

  • Uses entity types
  • Conditions via expressions
  • No magic SQL strings

Basic

c#
var cc= clip.setTable<UCMLClassDataSet>(out var u)
    .set(() => u.ChineseName, "caption")
    .set(() => u.ClassName, "name")
    .where(() => u.UCMLClassOID, 1)
    .doUpdate();

Generated SQL:

sql
update UCMLClassDataSet set ChineseName = 'caption',ClassName = 'name' where ( a.UCMLClassOID = 1 )

Shortcut

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);
});