如何將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
    }
}

如果您無權訪問連接創建過程,您將如何在配置連接中包裝連接?重寫超類中的代碼並將其包裝在那裡?這將涉及更改從基礎繼承的數百個類。我更喜歡一種改變基類的方法,只需要對超級組織進行必要的修改。

謝謝你,斯蒂芬

一般承認的答案

經過一些試驗和錯誤,我妥協了,並在基礎庫中添加了一個引用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數據庫))和WPF / Windows服務



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因