Dapper에서 사용할 연결을 처리하는 방법은 무엇입니까?

dapper inversion-of-control structuremap

문제

Dapper를 서비스 레이어에 사용하려고합니다. IDbConnection을 어떻게 처리해야합니까?

MVC5 프로젝트에서 IoC 용 StructureMap을 사용하고 있습니다.

서버 계층 클래스에 삽입 할 수 있습니까? 또는 다음과 같은 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에 연결을 삽입해야합니까? 그렇다면 어떻게해야합니까?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

전문가 답변

  1. 연결 풀링이 활성화되어있는 한 (SQL 서버의 경우 기본적으로 활성화되어 있음) 실제로 연결을 열고 닫지는 않습니다. 연결 풀에서 페치 / 해제하는 중입니다. 마이크로 초 만 걸립니다.

  2. 그것은 전적으로 디자인 결정입니다. 주입 작업. 주문형 건축 공사. http 요청의 경우 주문형 (지연된 캐시지만 캐시 된) 요청 중심의 연결 저장소를 사용할 수도 있습니다 (요청이 끝나면 즉시 처리해야합니다).



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.