【问题标题】:How to handle connections to use in Dapper?如何处理在 Dapper 中使用的连接?
【发布时间】:2014-09-18 20:58:27
【问题描述】:

我正在尝试在服务层上使用 Dapper。 IDbConnection 应该如何处理?

我在一个 MVC5 项目中使用这个,它带有 StructureMap for IoC。

我可以在服务器层类中注入它吗?或者可能是如下的 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
 }
  1. 恐怕这种方法会打开和关闭许多连接。这是个问题吗?

  2. 我应该在 DapperWrapper 中注入连接吗?如果是,如何?

最好的方法是什么?

【问题讨论】:

标签: inversion-of-control structuremap dapper


【解决方案1】:
  1. 只要启用连接池(对于 SQL 服务器,默认情况下启用),您实际上不会打开和关闭连接 - 您是从连接池获取/释放到连接池.它应该只需要几微秒。

  2. 这完全是一个设计决定。注射工作。按需施工。在 http 请求的情况下,您还可以经常使用以请求为中心的按需(延迟但缓存)连接存储(只要确保在请求结束时将其处理掉!)。

    李>

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2012-07-09
    • 1970-01-01
    相关资源
    最近更新 更多