返回
FreeSql ORM 数据更新指南:单条、批量、返回值
见解分享
2023-11-08 04:01:44
引言
数据更新是数据库操作中至关重要的环节,FreeSql ORM 秉持一贯的简洁高效理念,为开发者提供了丰富的更新数据方法,支持单条更新、批量更新,并在特定的数据库执行环境中返回更新后的记录值。
单条数据更新
1. 使用 Update 方法
Update
方法是最基本的单条数据更新方法,支持指定列进行更新操作。
// 更新指定列
await _dbContext.GetRepository<User>()
.Update(u => new User
{
Name = "Jack",
Age = 30
})
.Where(u => u.Id == 1)
.ExecuteAffrowsAsync();
2. 使用 Set 方法
Set
方法可以指定多个列进行更新,更具灵活性。
// 更新多个列
await _dbContext.GetRepository<User>()
.Update()
.Set(u => u.Name, "Jack")
.Set(u => u.Age, 30)
.Where(u => u.Id == 1)
.ExecuteAffrowsAsync();
批量数据更新
1. 使用 InsertOrUpdate 方法
InsertOrUpdate
方法可以批量更新或插入数据,如果记录存在则更新,否则插入。
// 批量更新或插入
await _dbContext.GetRepository<User>()
.InsertOrUpdate(new[]
{
new User { Id = 1, Name = "Jack", Age = 30 },
new User { Id = 2, Name = "Tom", Age = 25 }
})
.ExecuteAffrowsAsync();
2. 使用 UpdateRange 方法
UpdateRange
方法可以批量更新数据,要求实体对象的主键必须已设置。
// 批量更新
await _dbContext.GetRepository<User>()
.UpdateRange(new[]
{
new User { Id = 1, Name = "Jack", Age = 30 },
new User { Id = 2, Name = "Tom", Age = 25 }
})
.ExecuteAffrowsAsync();
返回更新值
在特定数据库(如 PostgreSQL、Oracle、DB2)中,可以使用 AsTable
方法返回更新后的记录值。
// 返回更新值
var updatedValues = await _dbContext.GetRepository<User>()
.Update()
.Set(u => u.Name, "Jack")
.Set(u => u.Age, 30)
.Where(u => u.Id == 1)
.AsTable()
.ToListAsync<dynamic>();
高级用法
- 条件更新: 可以使用
Where
方法指定更新条件。 - 使用 Include 方法: 可以在更新后包含关联实体,提高查询效率。
- 并发控制: 可以使用
WithVersion
方法实现乐观并发控制。 - 事务处理: 可以在一个事务中执行多个更新操作。
结语
FreeSql ORM 的数据更新功能强大而灵活,支持单条更新、批量更新,并且可以在特定的数据库中返回更新后的记录值。通过掌握这些技术,您可以轻松更新数据库数据,满足您的各种业务需求。