MVC3からベースクラスにmvc-mini-profiler接続を渡す方法

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
    }
}

接続作成プロセスにアクセスできない場合は、プロファイル接続で接続をどのようにラップしますか?スーパークラスのコードを書き換えてそこにラップしますか?これには、ベースから継承する何百ものクラスを変更する必要があります。スーパークラスに必要な変更をほとんど加えずに、ベースクラスを変更する方法が好きです。

ありがとう、スティーブン

受け入れられた回答

少し試行錯誤したあと、ベースライブラリの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
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow