我正在使用dapper从数据库中获取数据,因为需要处理数据库连接,所以我把它放在一个使用块中。但我开始注意到我看到了很多相同的用法,我认为编写一个包装函数可能很聪明,如下所示:
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'没有指定的适用方法 “查询”但似乎有一个名称的扩展方法。 无法动态分派扩展方法。考虑投射 动态参数或调用扩展方法没有 扩展方法语法
我做错了什么,以及我在这里尝试传递动态参数的正确方法是什么?
答案 0 :(得分: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);
}
}