3

J'ai une Asp.net Mvc 3 Application qui utilise maintenant le MvcMiniProfiler. J'utilise aussi Entity Framework pour accéder à ma base de données, et je voudrais permettre au profileur de travailler avec le modèle d'entité. Jusqu'à présent, j'ai créé l'usine de contexte ci-dessous:profilage Entity Framework avec MvcMiniProfiler

internal class ProfiledContextFactory : IContextFactory 
{ 
    public ModelContainer GetContext() 
    { 
     var conn = ProfiledDbConnection.Get(GetConnection()); 
     return ObjectContextUtils.CreateObjectContext<ModelContainer>(conn); 
    } 

    private static EntityConnection GetConnection() 
    { 
     return new EntityConnection(ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString); 
    } 
} 

Quand je lance le code ci-dessus, qui est appelé par ma couche de dépôt quand je commence une unité de travail, il est bloqué dans une boucle de infite lorsque vous appelez CreateDbCommandDefinition dans la classe MvcMiniProfiler.ProfiledDbServices.

Tous les indices que je fais mal?

Répondre

3

Le problème était mon GetConnection revenait le EntityConnection, pas le SqlConnection dans le EntityConnection. J'ai maintenant modifié mon code afin qu'il lit:

private static SqlConnection GetConnection() 
{ 
    var connStr = ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString; 
    var entityConnStr = new EntityConnectionStringBuilder(connStr); 
    return new SqlConnection(entityConnStr.ProviderConnectionString); 
} 

Et il fonctionne très bien.

J'ai découvert cela en regardant cette question: Using mvc-mini-profiler with EF 4.0 and Ninject