Сначала я использую код EF и мини-профилировщик в конструкторе контекста. Я создаю новую фабрику соединений и передаю ее методу ProfiledDbConnectionFactory, который возвращает профилированное соединение, которое затем можно установить как DefaultConnectionFactory контекста.
public MyConext()
{
var factory = new ConnectionFactory();
var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
Database.DefaultConnectionFactory = profiled;
}
Соединение Facotry просто возвращает новое sql соединение
public class ConnectionFactory :IDbConnectionFactory
{
public DbConnection CreateConnection()
{
var cnn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["SomeConnection"].ToString());
return cnn;
}
Вам также необходимо добавить ProfiledDBProvider в файл веб-конфигурации. Убедитесь, что номер версии правильный для вас.
<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>
Это прекрасно работает для меня как в веб-формах MVC, так и в asp.net, используя пакет nuget Miniprofiler. Я также ознакомился бы с новой версией пакета nuget для MVC, которая автоматически настраивает профилирование как часть глобального фильтра действий.