问题描述
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();
解决方法
您必须使用UnsafeLiteral
来指示编译器使用该值而不进行任何处理。
var q = new Query("Table").AsUpdate(new Dictionary<string,object> {
{"Id",1},{"Value",Expressions.UnsafeLiteral("\"Col\"")}
});
这将产生以下内容:
UPDATE "Table" SET "Id" = 1,"Value" = "Col"