我正在尝试在服务层上使用Dapper。它应该如何处理IDbConnection?
我在使用StructureMap for IoC的MVC5项目中使用它。
我可以在服务器层类中注入它吗?或者可能是DapperWrapper如下:
public class DapperWrapper {
private ConnectionString { get { return Settings.ConnectionString; } }
public IEnumerable<T> Query<T>(String sql, dynamic parameters = null) {
IEnumerable<T> result;
using (IDbConnection connection = new SqlConnection(_connection)) {
connection.Open();
result = SqlMapper.Query<T>(connection, sql, parameters);
}
return result;
} // Query
// OTHER DAPPER METHODS
}
我担心这种方法会打开并关闭许多连接。这是一个问题吗?
我应该在DapperWrapper中注入一个连接,如果是,如何?
这样做的最佳方式是什么?
答案 0 :(得分:2)
只要启用了连接池(对于SQL服务器,默认情况下已启用),您不是实际打开和关闭连接 - 您要从/释放到连接池。它应该只需要几微秒。
这完全是一个设计决定。注射工作。按需建设工程。对于http请求,您还可以经常使用按需(延迟但缓存)以请求为中心的连接存储(只需确保在请求结束时将其丢弃!)。