AsUpdate的SqlKata值作为列名

问题描述

我有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();

解决方法

您必须使用UnsafeLiteral来指示编译器使用该值而不进行任何处理。

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

这将产生以下内容:

UPDATE "Table" SET "Id" = 1,"Value" = "Col"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...