MiniProfiler与EF"模型第一"edmx模型

BZi*_*ink 11 asp.net-mvc asp.net-mvc-3 mvc-mini-profiler

我正在尝试让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. 
Run Code Online (Sandbox Code Playgroud)

这引发了异常......

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

我不知道从哪里开始.

Dar*_*rov 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);
Run Code Online (Sandbox Code Playgroud)


Mor*_*sen 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>
Run Code Online (Sandbox Code Playgroud)

  • 如果我使用创建我原始问题中包含的上下文的方法,我仍然可以产生溢出错误(使用4.0.0.0).如果我转向更接近达林的答案,那就有效了.值得一提的是,数据库分析非常棒! (2认同)