我想插入一部分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);
但无济于事。
答案 0 :(得分:2)
您无法在T-SQL中参数化字段名称。
在将sql字符串传递给Connection.Query()
方法之前,必须使用动态字段名生成动态SQL。