2014-04-16 1 views
2

나는이 대신 연결의 매개 변수로 SQL 문의 일부를 삽입 할 그것을 깔끔한 : 나는 Dapper에서 쿼리 매개 변수로 SQL 리터럴을 삽입하는 방법은 무엇입니까?

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); 
단정 한

를 사용하여 클래스를 사용자 정의 클래스의 매개 변수 문자열을 포장하고 매핑 시도

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

하지만 아무 소용이 없습니다.

답변

2

당신은 T-SQL에서 필드 이름을 매개 변수화 할 수 없습니다.

당신은 당신이 Connection.Query() 방법에 SQL 문자열을 전달하기 전에 동적 필드 이름을 가진 동적 SQL을 생성해야합니다.

+0

감사합니다. 네, 제 SQL 인젝터에 의존해야했습니다. –

관련 문제