mvc-mini-profiler 연결을 MVC3의 기본 클래스에 전달하는 방법

asp.net-mvc-3 dapper mvc-mini-profiler

문제

이 스 니펫 코드를 감안할 때

public abstract class Foo
{
    private static SqlConnection _sqlConnection;

    protected SqlConnection GetOpenConnection()
    {
        if (_sqlConnection == null)
        {
            _sqlConnection = new SqlConnection("connection string");
        }
        return _sqlConnection;
    }

    protected abstract void Execute();
}

public class FooImpl : Foo
{

    protected override void Execute()
    {
        var myConn = GetOpenConnection();
        var dog = myConn.Query<dynamic>("select 'dog' Animal");
        var first = dog.First();

        string animalType = first.Animal;
        // more stuff here
    }
}

연결 생성 프로세스에 액세스 할 수없는 경우 프로파일 연결에서 연결을 래핑하는 방법은 무엇입니까? 수퍼 클래스에서 코드를 다시 작성하고 거기에 랩핑합니까? 이것은베이스로부터 상속받은 수백 개의 클래스를 변경하는 것을 포함합니다. supers에 필요한 최소한의 변경으로 기본 클래스를 변경하는 방법을 선호합니다.

스티븐, 고마워.

수락 된 답변

약간의 시행 착오를 거친 후에 나는 기본 라이브러리의 MvcMiniProfiler에 손상을 입히고 참조를 추가하고 연결 코드를 약간 변경했습니다.

    protected DbConnection GetOpenConnection()
    {
        if (_connection == null)
        {
            _connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connection string "].ConnectionString);
            _connection.Open();
        }
        return MvcMiniProfiler.Data.ProfiledDbConnection.Get(_connection, MiniProfiler.Current); 
    }

    private static SqlConnection _connection;

이것은 MVC 프로젝트 (프로파일 링 목적을 위해 우리가 그 기능 (QA / Prod Databases)가없는 곳)과 WPF / Windows 서비스




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