11

我试图让 MiniProfiler 分析我的数据库访问,但我遇到了问题。我看到的所有帮助似乎都是针对“代码优先”实体框架连接的。我的模型是在今年代码首次更新可用之前设计的,我使用设计器创建了 edmx 模型。(我已经使用了将近一年,它似乎对我有用)

MiniProfiler 文档站点上的示例对我来说没有意义。我已经尝试了它的一些变体,但我遇到了问题。

我的模型被称为 CYEntities,通常是为了实例化一个 ObjectContext 我只是这样做这 var context = new CYEntities()是我为探查器尝试过的......

var dbConnection = new CYEntities().Connection;
var profiledConnection = ProfiledDbConnection.Get(dbConnection);
var context = profiledConnection.CreateObjectContext<CYEntities>(); // this is the context I'd finally use to access data. 

这会引发异常...

System.ArgumentException:找不到请求的 .Net Framework 数据提供程序。它可能没有安装。

我不知道从这里去哪里。

4

2 回答 2

11

试试这样:

var connectionString = ConfigurationManager
    .ConnectionStrings["MyConnectionString"]
    .ConnectionString;
var ecsb = new EntityConnectionStringBuilder(connectionString);
var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
var pConn = ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current);
var context = ObjectContextUtils.CreateObjectContext<CYEntities>(pConn);
于 2011-07-24T07:21:29.323 回答
7

我有同样的问题。看来您必须将以下内容添加到您的 web.config,但是,对我来说,这会导致 w3wp.exe 进程崩溃(以及 Visual Studio 中的 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>
于 2011-07-25T12:16:51.873 回答