2014-01-05 88 views
1

我正在使用dapper從數據庫中獲取數據,並且因爲需要處理數據庫連接,所以我將其放入使用塊中。但是,我開始注意到,我看到很多相同的usings的,我想這可能是聰明寫一個包裝函數,是這樣的:如何在方法調用中傳遞動態參數

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

使用object而不是dynamic

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

@Cornelis沒問題,喜歡用小巧玲瓏:) –

相關問題