簡體   English   中英

如何在Dapper ORM中使用@>'contains'運算符

[英]How to use the @> 'contains' operator with Dapper ORM

使用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似乎在@> contains運算符上遇到了一些麻煩,因為查詢始終不返回任何結果。

如何在Dapper中使用此@>運算符?

更新資料

我將構造更新為以下內容:

$@"
    SELECT * FROM ordertable
    WHERE orderjson @> '{{""Lines"":[{{""SKUID"": ""@SkuId"" }}]}}'
";

Dapper似乎忽略了@SkuId參數,因為我的查詢看起來像

SELECT * FROM ordertable
WHERE orderjson @> '{"Lines":[{"SKUID": "@SkuId" }]}'

另請參閱此Github問題 ,該問題也可能有用。

我們最終分為兩個語句:

SkuLineJson = $@"{{""Lines"":[{{""SKUID"": ""{object.SkuId}""}}]}}"

並在我們的sql語句構造中使用此變量:

$@" SELECT * FROM ordertable 
    WHERE orderjson @> json_in(@SkuLineJson::cstring)::jsonb
";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM