PostgreSQL表达式更新可为空的枚举字段报错 返回
Nothing丷 发布于2周前
发生异常: CLR/Npgsql.PostgresException
引发的异常:“Npgsql.PostgresException”(位于 System.Private.CoreLib.dll 中): '42804: column "userstatus" is of type integer but expression is of type text'
在 Npgsql.NpgsqlConnector.<<ReadMessage>g__ReadMessageLong|201_0>d.MoveNext()
在 Npgsql.NpgsqlDataReader.<NextResult>d__44.MoveNext()
在 Npgsql.NpgsqlCommand.<ExecuteReader>d__100.MoveNext()
在 Npgsql.NpgsqlCommand.<ExecuteReader>d__100.MoveNext()
在 System.Threading.Tasks.ValueTask1.get_Result() 在 Npgsql.NpgsqlCommand.<ExecuteNonQuery>d__88.MoveNext()
在 SqlSugar.AdoProvider.<ExecuteCommandAsync>d__156.MoveNext()
在 SqlSugar.UpdateableProvider1.<ExecuteCommandAsync>d__136.MoveNext() 在 LawTotalSys.Application.Service.TestService.<TestLawyerStatusUpdateByAdapt>d__22.MoveNext() 在
ORM版本 <PackageReference Include="SqlSugarCore" Version="5.1.4.207" />
数据库类型:PostgreSQL
示例代码如下:
[SugarTable("sys_user", "用户表")]
public class SysUser
{
/// <summary>
/// 主键Id
/// </summary>
[SugarColumn(ColumnDescription = "Id主键", IsPrimaryKey = true, ColumnName = "id")]
public long Id { get; set; } = YitIdHelper.NextId();
/// <summary>
/// 用户状态
/// </summary>
[SugarColumn(ColumnDataType = "int", ColumnName = "userstatus")]
public UserStatus? UserStatus { get; set; }
}
public class UpdateUserInput
{
public long Id { get; set; }
public UserStatus? UserStatus { get; set; }
}
/// <summary>
/// 修改可为空枚举报错
/// </summary>
/// <returns></returns>
public async Task UpdateUserStatus(UpdateUserInput input)
{
await _db.Updateable<SysUser>()
.SetColumns(a => new SysUser()
{
UserStatus = input.UserStatus
})
.Where(a => a.Id == input.Id)
.ExecuteCommandAsync();
}
UpdateUserInput.Id=1 UserStatus不传值
AI分析原因:实际执行时,@userstatus 被 SqlSugar/Npgsql 绑定成了 text 类型的空值
热忱回答(7)
-
fate sta VIP0
2周前var x= input.UserStatus;
这样试一下呢。
0 回复 -
Nothing丷 VIP0
2周前@fate sta:稍等,我试下
0 回复 -
Nothing丷 VIP0
2周前@fate sta:
var x = input.UserStatus;
await _db.Updateable<SysUser>()
.SetColumns(a => new SysUser()
{
UserStatus = x
})
.Where(a => a.Id == input.Id)
.ExecuteCommandAsync();
这样写就正常运行,不会报错
0 回复 -
Nothing丷 VIP0
1周前@fate sta:不更换写法的情况下有解决方案吗
0 回复 -
Nothing丷 VIP0
1周前@fate sta:有方案吗
0 回复 -
fate sta VIP0
1周前我记得修复过了,你升级最新预览版本试试
0 回复 -
Nothing丷 VIP0
5天前@fate sta:测试了
<PackageReference Include="SqlSugarCore" Version="5.1.4.215-preview05" />
还是同样的报错,column \"userstatus\" is of type integer but expression is of type text
0 回复