【问题标题】:Mvc-Mini-Profiler v1.7 on EF 4.1 Code-First project doesn't profile SQLEF 4.1 Code-First 项目上的 Mvc-Mini-Profiler v1.7 不分析 SQL
【发布时间】:2011-10-16 22:10:46
【问题描述】:

我昨天在我的项目中设置了 MiniProfiler.MVC3 - 1.7 包。控制器和视图分析工作正常,但我真正感兴趣的是 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 分析工作的任何指导。

【问题讨论】:

  • 有人能帮我解决这个问题吗?我仍然无法让 SQL 分析工作。感谢任何人可以提供的任何帮助。

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


【解决方案1】:

我首先使用 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 网络表单中都很好。我还将查看作为全局操作过滤器的一部分自动配置分析的 nuget 包的新 MVC 版本。

【讨论】:

  • 非常感谢您的回复。我已经在使用 MiniProfiler.MVC3 v1.7 这个版本在 App_Start 文件夹中创建 miniprofiler.cs。我的填充如下 'code' public static void PreStart() { var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["CMDBMVC3"].ConnectionString); var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory); Database.DefaultConnectionFactory = 分析; }
  • 我实际上已经在两台不同计算机上的 2 个独立项目上尝试了 miniprofiler.mvc3 v1.7,但响应完全相同。根本没有 SQL 分析。我显然做错了什么,我只是不知道是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多