我正在使用 dapper 从数据库获取数据,并且由于需要处理数据库连接,所以我将其放在 using block 中。但我开始注意到我看到了很多相同的用法,我认为编写一个包装函数可能是明智的,如下所示:
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' has no applicable method named 'Query' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax
我做错了什么以及按照我在这里尝试的方式传递动态参数的正确方法是什么?
最佳答案
使用对象
而不是动态
。
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);
}
}
关于c# - 如何在方法调用中传递动态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937053/