MvcMiniProfiler в EF 4.1 Проект Code-First не обрабатывает SQL
У меня есть версия 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
Этот тоже сильно застал меня. Похоже, что соглашение об именах строк соединения имеет приоритет над 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);