2014-01-05 53 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没问题,喜欢用小巧玲珑:) –

相关问题