1

我有 SqlKata 生成的以下查询:

UPDATE "temp"."dbe01_measures" SET "category2name" = 'category4name'.

预期的查询是:

UPDATE "temp"."dbe01_measures" SET "category2name" = "category4name"

我想使用 category4name 作为列名,而不是作为值。

代码是:

var query = new Query(dimensionDataSource.Object)

var valuesToUpdateForQ1 = new Dictionary<string, object>
{
   {toOptionDataSourceMetadata.NameColumn, fromDimension.DimensionDisplayName}
};

query.AsUpdate(new ReadOnlyDictionary<string, object>(valuesToUpdateForQ1));

var sqlQueryString1 = new QueryFactory { Compiler = new PostgresCompiler() }.Compiler.Compile(query1).ToString();
4

1 回答 1

1

您必须使用UnsafeLiteral来指示编译器在不进行任何处理的情况下使用该值。

var q = new Query("Table").AsUpdate(new Dictionary<string, object> {
    {"Id", 1},
    {"Value", Expressions.UnsafeLiteral("\"Col\"")}
});

这将产生以下内容:

UPDATE "Table" SET "Id" = 1, "Value" = "Col"
于 2020-09-23T13:44:02.920 回答