EF 4.1 Code-First项目上的MvcMiniProfiler不会分析SQL

rka*_*ran 15 code-first entity-framework-4 asp.net-mvc-3 mvc-mini-profiler

我引用了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>
Run Code Online (Sandbox Code Playgroud)

(项目主页的版本= 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());
    }
Run Code Online (Sandbox Code Playgroud)

分析器工作得很好,除了我不能让它来分析SQL.我正在使用SQL Server 2008 Express.我一直在关注Google Code项目主页上的相关问题而且完全陷入困境.

Chr*_*ter 7

这个让我难以忍受了很久.似乎连接字符串命名约定优先于Database.DefaultConnectionFactory.

你能尝试在web.config中重命名连接字符串吗?

   <connectionStrings>
       <add name="ReCouponContext" connectionString="..." />
   </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

   <connectionStrings>
       <add name="ReCoupon" connectionString="..." />
   </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

然后改变

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCoupon"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说似乎不起作用.当我将MyModelContext连接字符串重命名为MyModel时,我收到登录失败.这是因为DefaultConnectionFactory将设置服务器,用户名和密码,但它不会设置数据库名称,因此EF正在寻找一个名为MyProject.MyModel.MyModelContext的数据库,这显然不存在,因为我调用了不同的数据库.似乎将EF代码首先指向不同数据库的唯一方法是使用名为MyModelContext的连接字符串,这显然不适用于MVCProfiler.有任何想法吗? (6认同)
  • 这对我来说根本不起作用.我在命名优先级方面遇到了同样的问题,但即使在更改之后它也没有显示任何SQl分析信息 (2认同)