¿Cómo insertar un literal de SQL como parámetro de consulta en Dapper?

c# dapper

Pregunta

Quiero insertar parte de la declaración SQL como un parámetro en lugar de concatenación para tenerla ordenada:

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

Intenté envolver la cadena de parámetros en una clase personalizada y mapear la clase usando 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);

pero fue en vano.

Respuesta aceptada

No puede parametrizar nombres de campo en T-SQL.

Tendrá que generar el SQL dinámico con sus nombres de campo dinámicos antes de pasar la cadena sql al método Connection.Query() .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué