pgsql仓储实体批量更新对应sql数组类型错误问题 返回
使用仓储更新时数组类型在生成的sql内被转为varchar导致更新失败,但插入没有问题
对应实体属性如下:
[SugarColumn( ColumnDataType = "bigint []", ColumnName = "cnc_ids", IsArray = true, IsNullable = true )]
public long[]? CncIds{
get; set;
}生成的sql:
UPDATE "tdd"."thrid_device_integration_setting" SET
"device_name"=T."device_name",
"device_type"=T."device_type",
"deploy_type"=T."deploy_type",
"device_identification"=T."device_identification",
"gateway_setting_id"=T."gateway_setting_id",
"cnc_ids"=T."cnc_ids",
"send_emp_ids"=T."send_emp_ids",
"receive_emp_ids"=T."receive_emp_ids",
"modi_date"=T."modi_date",
"modi_user"=T."modi_user",
"send_times"=T."send_times" FROM (VALUES
(CAST('4' AS int8),
CAST('测试数据3' AS varchar),
CAST('1' AS int4),CAST('2' AS int4),
CAST('518783' AS varchar),
CAST(NULL AS int8),
CAST('{1}' AS varchar),
CAST('{1}' AS varchar),
CAST('{1}' AS varchar),
CAST('1784281380137' AS int8),
CAST('1' AS int8),CAST('9' AS int4))
) AS T ("device_id","device_name","device_type","deploy_type","device_identification","gateway_setting_id","cnc_ids","send_emp_ids","receive_emp_ids","modi_date","modi_user","send_times")
WHERE "tdd"."thrid_device_integration_setting"."device_id"=T."device_id"
sqlsugar版本:5.1.4.216
热忱回答(3)
-
Shayne VIP0
2周前异常:
An unhandled exception occurred.
Npgsql.PostgresException (0x80004005): 42804: column "cnc_ids" is of type bigint[] but expression is of type character varying
at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|201_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
at SqlSugar.AdoProvider.ExecuteCommandAsync(String sql, SugarParameter[] parameters)
at SqlSugar.UpdateableProvider`1.ExecuteCommandAsync()
at SqlSugar.SimpleClient`1.UpdateRangeAsync(List`1 updateObjs)
0 回复 -
fate sta VIP0
2周前先用useParameter 方式更新,这个我确认一下。或者改成string []
0 回复 -
Shayne VIP0
2周前@fate sta:useParameter我有尝试,在sql会变成 1, 2, 3 这种形式,缺少了{} ,这个问题只会在批量更新时出现,如果时单条更新就不会有问题
0 回复