我引用了MvcMiniProfiler的1.6版本(通过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代码项目主页上的相关问题而且完全陷入困境。
答案 0 :(得分:7)
这个让我难以忍受了很久。似乎连接字符串命名约定优先于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);