Как вставить SQL-литерал в качестве параметра запроса в Dapper?

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 с вашими динамическими именами полей, прежде чем передавать строку sql в метод Connection.Query() .



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему