2014-01-05 2 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»не имеет применимый метод с именем „Query“, но, как представляется, метод расширения с таким именем. Методы расширения не могут быть динамически отправлены. Рассмотрим литье динамические аргументы или вызова метода расширения без метода расширения синтаксиса

Что я делаю не так и что это правильный путь, чтобы пройти динамические параметры так, как я пытаюсь здесь?

ответ

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 не проблема, наслаждайтесь использованием dapper :) –

Смежные вопросы