【问题标题】:Dapper DynamicParametersDapper 动态参数
【发布时间】: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" });

然后查询运行没有错误。

注意:在我测试的字典中,没有和没有 @ 键。

【问题讨论】:

    标签: sql-server-2016 dapper


    【解决方案1】:

    我发现了问题。字典的值必须是对象类型:

    Dictionary<string, string> parameters = new Dictionary<string, object>();
    

    此外,字典键似乎不需要前导“@”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-10
      • 2023-03-26
      • 2014-06-30
      • 2023-02-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      相关资源
      最近更新 更多