MvcMiniProfiler в проекте EF 4.1 Code-First не профилирует SQL - PullRequest
15 голосов
/ 20 июля 2011

У меня есть версия 1.6 MvcMiniProfiler, на которую есть ссылка (через Nuget), и я настроил все как описано на домашней странице проекта по адресу http://code.google.com/p/mvc-mini-profiler/.

У меня есть следующий код в файле Web.config:

<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.6.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
</system.data>

(Домашняя страница проекта имеет версию = 1.5.0.0 - с тех пор пакет NuGet был обновлен)

У меня есть следующий код в Global.asax (и строка подключения также определена в Web.config):

    protected void Application_Start()
    {
        Log.Info("ReCoupon has started.");

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString);
        var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
        Database.DefaultConnectionFactory = profiled;

        Database.SetInitializer(new ReCouponContextInitializer());
    }

Профилировщик прекрасно работает, за исключением того, что я не могу получить его в профиле SQL. Я использую SQL Server 2008 Express. Я следил за сопутствующими проблемами на главной странице проекта Google Code и застрял.

1 Ответ

7 голосов
/ 23 июля 2011

Этот тоже меня долго ставил в тупик. Похоже, что соглашение об именовании строк подключения имеет приоритет над Database.DefaultConnectionFactory.

Не могли бы вы попробовать переименовать строку подключения в web.config?

от

   <connectionStrings>
       <add name="ReCouponContext" connectionString="..." />
   </connectionStrings>

до

   <connectionStrings>
       <add name="ReCoupon" connectionString="..." />
   </connectionStrings>

, а затем изменить

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString);

до

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCoupon"].ConnectionString);
...