Primero uso el código EF y el mini generador de perfiles dentro de mi constructor de contexto. Creo una nueva fábrica de conexiones y la paso al método ProfiledDbConnectionFactory. Esto devuelve una conexión perfilada que luego puede establecer como DefaultConnectionFactory del contexto.
public MyConext()
{
var factory = new ConnectionFactory();
var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
Database.DefaultConnectionFactory = profiled;
}
La conexión Facotry simplemente devuelve una nueva conexión sql
public class ConnectionFactory :IDbConnectionFactory
{
public DbConnection CreateConnection()
{
var cnn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["SomeConnection"].ToString());
return cnn;
}
También debe agregar ProfiledDBProvider al archivo de configuración web. Asegúrese de que el número de versión sea correcto para usted.
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
description="MvcMiniProfiler.Data.ProfiledDbProvider"
type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
Esto funciona bien para mí en formularios web MVC y asp.net usando el paquete nuget Miniprofiler. También revisaría la nueva versión MVC del paquete nuget que configura automáticamente la creación de perfiles como parte de un filtro de acción global.