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

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);

但无济于事。

一般承认的答案

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

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因