Не удается заставить mvc mini Profiler работать с EF 4.2

Я просмотрел сообщения о переполнении стека, но пока безуспешно. Я начал новый проект MVC 3, который использует Entity framework 4.2. Я использовал nuget для установки пакетов MiniProfiler, MiniProfiler.MVC3 и MiniProfiler.EF (MiniProfiler.EF также был добавлен в мой уровень домена). Без профилирующего фреймворка все работает нормально. Когда я профилирую EF, раскомментировав строку MiniProfilerEF.Initialize();, я получаю сообщение об ошибке:

Не удалось обнаружить фабрику поставщика для указанного подключения к хранилищу типа MvcMiniProfiler.Data.EFProfiledDbConnection. Зарегистрированные фабрики провайдеров и все фабрики провайдеров в сборке, где определено "MvcMiniProfiler.Data.EFProfiledDbConnection", искали фабрику, которая создала бы соответствующее соединение.

Я попытался получить последний исходный код, поскольку читал, что обновление для EF 4.1 требовало его. Теперь, когда я запускаю проект, я получаю сообщение об ошибке:

Не удалось определить имя поставщика для подключения типа MvcMiniProfiler.Data.EFProfiledDbConnection.

Документация, которую я просмотрел, немного сбивает с толку, так как я не могу сказать, что новое, а что старое. Из этого сообщения Кажется, мне нужно что-то изменить в моем web.config. Есть еще один шаг, который мне не хватает? Спасибо за помощь.


person Manny    schedule 26.01.2012    source источник
comment
Вы пробовали транк и новую процедуру инициализации?   -  person Sam Saffron    schedule 14.02.2012
comment
Спасибо за ответ, Сэм. Я должен начать с того, что я новичок в mini-Profiler, поэтому спасибо за терпение. Я получил ствол и запускаю проект Sample.MVC. Профилирование sql отлично работает с подключением SQLite. Когда я нажимаю EF Code First Ajax Request на домашнем контроллере, я не вижу sql-запрос и стек вызовов с шагами профилирования «Первый счет» и «Вставка», которые я сделал на шаге «Вставить Routehits». Я знаю, что в прошлом профилированное соединение должно было поставляться с ctor DbContext, но, насколько я могу судить, это больше не нужно. Что мне не хватает?   -  person Manny    schedule 17.02.2012
comment
@Manny Имеет аналогичную проблему (невозможно определить имя провайдера для подключения типа ...). Вы уже в этом разобрались?   -  person Pandincus    schedule 22.02.2012


Ответы (2)


Вы должны поместить MiniProfilerEF.Initialize(); строку перед любым доступом к базе данных:

protected void Application_Start()
{
       MiniProfilerEF.Initialize();

       // Start access database from here ...
       // For example call MyDbContext.Database.Exists();
}
person Vlad Rudenko    schedule 13.04.2012

Есть ли у вас эта запись в вашем файле 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.EntityFramework, Version=1.9.1.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>
person Daniel Lorenz    schedule 19.03.2012