Skip to content

更新

使用 Update<T>()Set(...) 和显式筛选条件构建更新命令:

csharp
var affected = connection
    .UseDb4Net(Db4NetOptions.SqlServer)
    .Update<User>()
    .Set(u => u.Name, "Alice")
    .Where(u => u.Id, Op.Eq, 1)
    .Execute();

Set(...) 使用 CLR 成员选择器,值会作为参数传递。

筛选条件使用和 SELECT 查询相同的 Where(...)OrWhere(...)WhereGroup(...)OrWhereGroup(...) API。

实体取值与键

当你希望从对象读取映射的非 key 值,并从同一个对象读取 key 谓词时,使用 Update(entity)

csharp
var affected = db.Update(user)
    .Execute();

当只有 key 谓词需要来自对象,而更新字段仍要显式控制时,使用 WhereKey(entity)

csharp
var affected = db.Update<User>()
    .Set(u => u.Name, "Alice")
    .WhereKey(user)
    .Execute();

Update(entity)WhereKey(entity) 要求模型有且只有一个映射 key,并且 key 值不是 null0 或对应类型的默认值。复合 key 模型请使用显式 Where(...) 条件。

所有行

UPDATE 默认要求 WHERE 条件。

csharp
var affected = db.Update<User>()
    .Set(u => u.IsActive, false)
    .AllowAllRows()
    .Execute();

WARNING

只有确认要更新每一行时,才调用 AllowAllRows()