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
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow