Cómo usar el operador @> 'contains' con Dapper ORM

c# dapper postgresql

Pregunta

Usando el ORM Dapper estoy construyendo la siguiente consulta para obtener un orden específico de mi almacén de datos PostgreSQL:

string.Format("SELECT * FROM OrderTable WHERE orderjson @> {0}",
    "'{\"Lines\":[{\"SKUID\":\"@SkuId\"}]}'");

Al pasar 123456-0 al paramater @SkuId esta construcción debería resultar en la siguiente consulta

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

Sin embargo, Dapper parece tener algunos problemas con el operador @> contains, ya que la consulta siempre no arroja resultados.

¿Cómo uso este operador @> con Dapper?

Actualizar

Actualicé mi construcción a lo siguiente:

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

Dapper parece ignorar el parámetro @SkuId ya que mi consulta parece

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

Respuesta popular

Vea también este problema de Github que también podría ser útil.

Terminamos dividiéndonos en dos declaraciones:

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

Y use esta variable en nuestra construcción de declaración sql:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué