使用Dapper ORM我构建以下查询以从PostgreSQL数据存储区获取特定订单:
string.Format("SELECT * FROM OrderTable WHERE orderjson @> {0}",
"'{\"Lines\":[{\"SKUID\":\"@SkuId\"}]}'");
将123456-0
传递给参数@SkuId
此构造应导致以下查询
SELECT * FROM ordertable WHERE orderjson @> '{"Lines":[{"SKUID":"123456-0"}]}'
然而,Dapper似乎在@>
包含运算符时遇到了一些问题,因为查询始终不返回任何结果。
如何将此@>
运算符与Dapper一起使用?
我将构造更新为以下内容:
$@"
SELECT * FROM ordertable
WHERE orderjson @> '{{""Lines"":[{{""SKUID"": ""@SkuId"" }}]}}'
";
Dapper似乎忽略了参数@SkuId
,因为我的查询看起来像
SELECT * FROM ordertable
WHERE orderjson @> '{"Lines":[{"SKUID": "@SkuId" }]}'
答案 0 :(得分:1)
另请参阅此Github issue,这也可能有用。
我们最终分成两个陈述:
SkuLineJson = $@"{{""Lines"":[{{""SKUID"": ""{object.SkuId}""}}]}}"
在我们的sql语句构造中使用此变量:
$@" SELECT * FROM ordertable
WHERE orderjson @> json_in(@SkuLineJson::cstring)::jsonb
";