-
Notifications
You must be signed in to change notification settings - Fork 890
Closed
Description
问题描述及重现代码:
请教一下,在更新实体时,SetSource和UpdateColumns有顺序要求吗,现在的情况是,先SetSource再UpdateColumns,实际会更新所有字段,并且设置的CanUpdate=false不生效,先UpdateColumns再SetSource,就只会更新指定的字段
// 表
[Table(Name = "test_freesql2")]
public class TestFreeSqlTable2
{
[Column(IsPrimary = true, IsIdentity = true)]
public long Id { get; set; }
public long Table1Id { get; set; }
public int Item1 { get; set; }
public int Item2 { get; set; }
[Column(CanInsert = false, CanUpdate = false, DbType = "int GENERATED ALWAYS AS ((Item1 + Item2)) STORED")]
public int Item3 { get; set; }
}
// 更新测试
var data = await freeSql.Select<TestFreeSqlTable2>()
.FirstAsync();
data.Item1 = Random.Shared.Next();
if (type == 1)
{
await freeSql.Update<TestFreeSqlTable2>()
.SetSource(data)
.UpdateColumns(x => new
{
x.Item1
})
.ExecuteAffrowsAsync();
}
else
{
await freeSql.Update<TestFreeSqlTable2>()
.UpdateColumns(x => new
{
x.Item1
})
.SetSource(data)
.ExecuteAffrowsAsync();
}
SetSource在前,生成的sql


数据库版本
mysql8
安装的Nuget包
freesql3.5.212 freesql.provider.mysqlconnector3.5.212
.net framework/. net core? 及具体版本
.net8
Metadata
Metadata
Assignees
Labels
No labels