如何将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合法吗? 是的,了解原因