Comment passer une connexion mvc-mini-profileur à une classe de base à partir de MVC3

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

Question

Étant donné cet extrait de code

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

Comment encapsuler la connexion dans une connexion profilée si vous n'avez pas accès au processus de création de connexion? Réécrivez le code dans la super classe et enveloppez-le? Cela impliquerait de changer des centaines de classes qui héritent de la base. Je préférerais un moyen de changer la classe de base, avec le moins de modifications nécessaires pour les supers.

Merci, Stephen

Réponse acceptée

Eh bien, après quelques essais et erreurs, j'ai compromis et ajouté une référence à MvcMiniProfiler dans la bibliothèque de base et modifié un peu le code de connexion.

    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;

Cela fonctionne à la fois pour l'hébergement dans le projet MVC (à des fins de profilage, où nous n'avons pas cette capacité (bases de données QA / Prod)) et Service WPF / Windows.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi