FreeSql (十一)更新数据 Where


static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.MySql, connectionString)
    .UseAutoSyncStructure(true) //自动同步实体结构到数据库
    .Build(); //请务必定义成 Singleton 单例模式

class Topic {
    [Column(IsIdentity = true, IsPrimary = true)]
    public int Id { get; set; }
    public int Clicks { get; set; }
    public string Title { get; set; }
    public DateTime CreateTime { get; set; }
}

动态条件

fsql.Update(object dywhere)

dywhere 支持

  • 主键值
  • new[] { 主键值1, 主键值2 }
  • Topic对象
  • new[] { Topic对象1, Topic对象2 }
  • new { id = 1 }

其他条件

除了上面介绍的 dywhere 构造参数外,还支持 Where lambda/sql 方法

出于安全考虑,没有条件不执行更新动作,避免误更新全表数据 更新全表数据:fsql.Update().Where("1=1").Set(a => a.Xxx == xxx).ExecuteAffrows()

fsql.Update()
  .Set(a => a.Title, "新标题")
  .Set(a => a.Time, DateTime.Now)
  .Where(a => a.Id == 1)
  .ExecuteAffrows();
//UPDATE `Topic` SET `Title` = @Title, `Time` = @Time 
//WHERE (Id = 1)

API

方法 返回值 参数 描述
Where Lambda 表达式条件,仅支持实体基础成员(不包含导航对象)
Where string, parms 原生sql语法条件,Where("id = @id", new { id = 1 })
Where T1 | IEnumerable 传入实体或集合,将其主键作为条件
WhereExists ISelect 子查询是否存在
ToSql string 返回即将执行的SQL语句
ExecuteAffrows long 执行SQL语句,返回影响的行数
ExecuteUpdated List 执行SQL语句,返回更新后的记录

系列文章导航

  • (十一)更新数据 Where