我昨天在我的项目中安装了MiniProfiler.MVC3 - 1.7软件包。 Controller和视图分析工作正常,但我真正感兴趣的是SQL分析。我无法让这个工作。我正在使用带有SQL 2008数据库的EF Code First。
我已经按照这篇文章中的所有建议......
mvcminiprofiler-on-ef-4-1-code-first-project-doesnt-profile-sql
在miniprofiler.cs中,我的SQL连接设置为...
var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["CMDBMVC3"].ConnectionString);
我的Web.config数据库连接是......
<add name="CMDBMVC3" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|CMDB_MVC3.mdf;Initial Catalog=CMDB_MVC3;Trusted_Connection=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
如果我在mini-profiler行上设置断点,则指向正确的数据库连接。我不知道此时还有什么可做的。我很感激如何让SQL分析工作。
答案 0 :(得分:0)
我首先使用EF代码并在我的Context构造函数中使用迷你探查器我创建一个新的连接工厂并将其传递给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添加到Web配置文件中。确保版本号适合您。
<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>
使用Miniprofiler nuget包在MVC和asp.net webforms中都可以正常使用。我还将查看nuget包的新MVC版本,该版本自动配置分析作为全局动作过滤器的一部分。