EF 4.1 Code-First项目上的Mvc-Mini-Profiler v1.7不会分析SQL

时间:2011-07-31 14:11:28

标签: sql-server-2008 asp.net-mvc-3 entity-framework-4.1 ef-code-first mvc-mini-profiler

我昨天在我的项目中安装了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分析工作。

1 个答案:

答案 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版本,该版本自动配置分析作为全局动作过滤器的一部分。