Jag använder EF-koden först och miniprofileraren i min kontextkonstruktor. Jag skapar en ny anslutningsfabrik och skickar denna till ProfiledDbConnectionFactory-metoden detta returnerar en profilerad anslutning som du sedan kan ställa in som DefaultConnectionFactory för sammanhanget.
public MyConext()
{
var factory = new ConnectionFactory();
var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
Database.DefaultConnectionFactory = profiled;
}
Anslutningen Facotry returnerar bara en ny sql-anslutning
public class ConnectionFactory :IDbConnectionFactory
{
public DbConnection CreateConnection()
{
var cnn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["SomeConnection"].ToString());
return cnn;
}
Du måste också lägga till ProfiledDBProvider i webbkonfigurationsfilen. Se till att versionsnumret är rätt för dig.
<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>
Detta fungerar bra för mig i både MVC och asp.net webbformulär med Miniprofiler nuget-paketet. Jag skulle också kolla in den nya MVC-versionen av nuget-paketet som automatiskt konfigurerar profilering som en del av ett globalt åtgärdsfilter.