我正在尝试编写一个包装器来隐藏我发现自己为 Dapper 中的每个 db 调用重复的大部分代码。(即 Sql Connection、try、default catch 和 finally)本质上我想做类似下面的代码,但我知道由于有一个动态参数,我不能以这种方式使用泛型 int。
我得到错误的方式是:
考虑强制转换动态参数或调用没有扩展方法语法的扩展方法(参考 conn.Query 方法)
有没有办法重构我的ExecuteQuery
或类似的东西?
public abtract class IDbAccessService
{
public LogService Logger { get; set; }
public virtual IEnumerable<T> ExecuteQuery<T>(string sql, dynamic param, string connString)
where T : BaseModel
{
using (var conn = DataAccessHelpers.GetOpenConnection(connString))
{
try
{
return conn.Query<T>(sql, param).ToList<T>();
}
catch (Exception ex)
{
Logger.Logger.Error(ex.Message, ex);
throw ex;
}
}
}
}