【发布时间】:2020-06-11 21:35:50
【问题描述】:
我在 C# 中使用 Dapper。我正在尝试动态构建查询、涉及的列和参数,但出现错误。这是示例代码:
private List<string> columns = new List<string>();
private List<string> values = new List<string>();
Dictionary<string, string> parameters = new Dictionary<string, string>();
// We dynamically determine columns to add:
columns.Add("AssetName");
values.Add("@AssetName");
parameters.Add("@AssetName", "test value");
string sql = @$"insert into foo ({String.Join(",", columns)}) values({String.Join(",", values)});";
var params = new DynamicParameters(params);
connectionObject.Execute(sql, params);
我得到的错误是:必须声明标量变量“@AssetName”。
我哪里出错了?
如果我将执行行替换为:
connectionObject.Execute(sql, new { AssetName = "test" });
然后查询运行没有错误。
注意:在我测试的字典中,没有和没有 @ 键。
【问题讨论】: