2014-01-05 3 views
1

데이터베이스에서 데이터를 가져 오는 데 dapper를 사용하고 있고 데이터베이스 연결을 삭제해야하기 때문에 using 블록에 넣어야합니다. 하지만 내가 같은 using이 많이 보았다 주목하기 시작하고 나는 래퍼 함수를 ​​작성하는 스마트 될 줄 알았는데, 이런 식으로 뭔가 :메서드 호출에서 동적 매개 변수를 전달하는 방법

protected IEnumerable<T> Query<T>(string query, dynamic param = null) 
    { 
     var connectionString = ConfigurationManager.ConnectionStrings["SomeString"].ConnectionString; 

     using (var connection = new SqlConnection(connectionString)) 
     { 
      return connection.Query<T>(query, param); 
     } 
    } 

을하지만이 컴파일되지 않습니다 내가 아주 이해가 안 돼요 오류가 내가 얻을 :

System.Data.SqlClient.SqlConnection를 쿼리 '' 라는 이름의 적용 가능한 방법이 없습니다 '그러나 그 이름으로 확장 방법을 가지고 나타납니다. 확장 메서드를 동적으로 디스패치 할 수 없습니다. 내가 잘못하고 동적 매개 변수를 내가 여기에 노력하고 방법을 전달하는 올바른 방법은 무엇하고 무엇 확장 메서드 구문

없이 확장 방법을 동적 인수를 주조 또는 전화 고려?

답변

2

dynamic 대신 object을 사용하십시오.

public IEnumerable<T> Query<T>(string query, object param) 
{ 
    var connectionString = ConfigurationManager.ConnectionStrings["SomeString"].ConnectionString; 

    using(var connection = new SqlConnection(connectionString)) 
    { 
     return connection.Query<T>(query, param); 
    } 
} 
+0

대단히 감사합니다. – Cornelis

+0

@ 코넬리스 문제 없어요, 사용 dapper :) –

관련 문제