postgresql jsonb_set函数使用Dapper [关闭]

ubby3x7f  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(165)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受回答。

这个问题是由错字或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
去年关闭。
Improve this question
在PostgreSQL中,如果我写这个查询,一切都很好:

UPDATE states
SET data = jsonb_set(data, '{test}', '"test"')
WHERE object_id = 'string'
RETURNING state_type, object_id, state_id, data

字符串
但是如果我想在.NET中使用Dapper编写类似的查询,那么我就会遇到问题:
Npgsql.PostgresException(0x80004005):42883:函数jsonb_set(jsonb,text,jsonb)不存在
下面是我的C#代码:

var sql = @"UPDATE states
        SET data = jsonb_set(data, @key, CAST(@data as jsonb))
        WHERE object_id = @objectId";
        
var result = await dbConnection.QueryFirstAsync<State>(sql, new
{
    objectId = "string",
    key = "{key}",
    data = "test"
});

bqujaahr

bqujaahr1#

函数jsonb_set接受参数为(jsonb,text[],jsonb)而不是(jsonb,text,jsonb)。所以我在@key中添加了::text[]:

var sql = @"UPDATE states
    SET data = jsonb_set(data, @key::text[], CAST(@data as jsonb))
    WHERE object_id = @objectId";

字符串

相关问题