类别:学习文档

日期:2021-07-15 浏览:1859 评论:0

FreeSql是功能强大的 .NET ORM,支持 .NetFramework 4.0+、.NetCore 2.1+、Xamarin 等支持 NetStandard 所有运行平台。
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<Topic>(1)
  .Set(a => a.CreateTime, DateTime.Now)
  .ExecuteAffrows();
  //UPDATE `Topic` SET `CreateTime` = '2018-12-08 00:04:59' 
  //WHERE (`Id` = 1)

支持 Set() 多次,相当于拼接

更新指定列,累加

fsql.Update<Topic>(1)
  .Set(a => a.Clicks + 1)
  .Set(a => a.Time == DateTime.Now)
  .ExecuteAffrows();
  //UPDATE `Topic` SET `Clicks` = ifnull(`Clicks`,0) + 1, `Time` = now() 
  //WHERE (`Id` = 1)

更新指定列,一次指定

fsql.Update<Topic>(1)
  .Set(a => new Topic
  {
    Clicks = a.Clicks + 1,
    Time = DateTime.Now
  })
  .ExecuteAffrows();
  
  //UPDATE `Topic` SET `Clicks` = ifnull(`Clicks`,0) + 1, `Time` = now() 
  //WHERE (`Id` = 1)

根据 Dto 更新

fsql.Update<T>()
  .SetDto(new { title = "xxx", clicks = 2 })
  .Where(a => a.Id == 1)
  .ExecuteAffrows();
  //UPDATE `Topic` SET `Title` = @p_0, `Clicks` = @p_1
  //WHERE (Id = 1)
  
fsql.Update<T>()
  .SetDto(new Dictionary<string, object> { ["title"] = "xxx", ["clicks"] = 2 })
  .Where(a => a.Id == 1)
  .ExecuteAffrows();//效果同上

自定义SQL

fsql.Update<Topic>()
  .SetRaw("Title = @title", new { title = "新标题" })
  .Where("Id = @id", 1)
  .ExecuteAffrows();
  //UPDATE `Topic` SET Title = @title WHERE (Id = @id)

API

方法返回值参数描述
SetSource<this>T1 | IEnumerable更新数据,设置更新的实体
Set<this>Lambda, value设置列的新值,Set(a => a.Name, "newvalue")
Set<this>Lambda设置列的的新值为基础上增加,Set(a => a.Clicks + 1),相当于 clicks=clicks+1
SetDto<this>object根据 dto 更新的方法
SetRaw<this>string, parms设置值,自定义SQL语法,SetRaw("title = @title", new { title = "newtitle" })
Where<this>Lambda表达式条件,仅支持实体基础成员(不包含导航对象)
Where<this>string, parms原生sql语法条件,Where("id = @id", new { id = 1 })
Where<this>T1 | IEnumerable传入实体或集合,将其主键作为条件
WhereExists<this>ISelect子查询是否存在
CommandTimeout<this>int命令超时设置(秒)
WithTransaction<this>DbTransaction设置事务对象
WithConnection<this>DbConnection设置连接对象
ToSqlstring
返回即将执行的SQL语句
ExecuteAffrowslong
执行SQL语句,返回影响的行数
ExecuteUpdatedList<T1>
执行SQL语句,返回更新后的记录

系列文章导航

FreeSql (一)入门及安装 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二)自动迁移实体 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三)实体特性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (四)实体特性 Fluent Api - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (五)插入数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (六)批量插入数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (七)插入数据时忽略列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (八)插入数据时指定列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (九)删除数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十)更新数据 - 学习文档 - 零一的世界 (vtzw.com)FreeSql (十一)更新数据 Where - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十二)更新数据时指定列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十三)更新数据时忽略列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十四)批量更新数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十五)查询数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十六)分页查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十七)联表查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十八)导航属性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十九)多表查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十)多表查询 WhereCascade - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十一)查询返回数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十二)Dto 映射查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十三)分组、聚合 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十四)Linq To Sql 语法使用介绍 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十五)延时加载 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十六)贪婪加载 Include、IncludeMany - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十八)事务 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十九)Lambda 表达式 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十)读写分离 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十一)分表分库 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十二)Aop - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十三)CodeFirst 类型映射 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十四)CodeFirst 迁移说明 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十五)CodeFirst 自定义特性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十六)进阶 仓储系列文档 - 学习文档 - 零一的世界 (vtzw.com)


本文标题:FreeSql (十二)更新数据时指定列
本文链接:https://vtzw.com/post/710.html
作者授权:除特别说明外,本文由 零一 原创编译并授权 零一的世界 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
 您阅读本篇文章共花了: 

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。