如何在Dapper中插入SQL文本作为查询参数?

时间:2014-04-16 22:30:08

标签: c# dapper

我想插入一部分SQL语句作为参数而不是连接,以使其整洁:

connection.Query(@"
    SELECT @Fields
    FROM Table
    WHERE ID = @Id
    ", new { Fields = "A, B", Id = 1});

我尝试将参数字符串包装在自定义类中,并使用Dapper

映射该类
public class SqlString
{
    public readonly string Value;

    public SqlString(string sql)
    {
        Value = sql;
    }

    public override string ToString()
    {
        return Value;
    }
}

...

Dapper.SqlMapper.AddTypeMap(typeof(SqlString), System.Data.DbType.Object);

但无济于事。

1 个答案:

答案 0 :(得分:2)

您无法在T-SQL中参数化字段名称。

在将sql字符串传递给Connection.Query()方法之前,必须使用动态字段名生成动态SQL。