让 mvc mini profiler 与 EF 4.2 一起使用时遇到问题

发布于 2024-12-29 17:18:35 字数 804 浏览 0 评论 0原文

我已经浏览了堆栈溢出帖子,但到目前为止还没有运气。我启动了一个使用 Entity Framework 4.2 的新 MVC 3 项目。我使用 nuget 安装 MiniProfiler、MiniProfiler.MVC3 和 MiniProfiler.EF 包(MiniProfiler.EF 也添加到我的域层中)。如果没有分析实体框架,一切都会正常工作。当我通过取消注释行 MiniProfilerEF.Initialize(); 来分析 EF 时,收到错误:

无法为类型为“MvcMiniProfiler.Data.EFProfiledDbConnection”的指定存储连接提供提供程序工厂发现了。已注册的提供程序工厂以及定义了“MvcMiniProfiler.Data.EFProfiledDbConnection”的程序集中的所有提供程序工厂都被搜索,以查找将生成匹配连接的工厂。

在阅读更新时,我尝试获取最新的源代码EF 4.1 需要它。现在,当我运行该项目时,出现错误:

无法确定类型为“MvcMiniProfiler.Data.EFProfiledDbConnection”的连接的提供程序名称。

我浏览过的文档有点令人困惑,因为我分不清什么是新的,什么是旧的。来自这篇文章 看来我需要修改 web.config 中的任何内容。我还缺少另一个步骤吗?感谢您的帮助。

I've scoured through stack overflow posts but no luck thus far. I've started a new MVC 3 project that uses Entity framework 4.2. I used nuget to install packages MiniProfiler, MiniProfiler.MVC3, and MiniProfiler.EF (MiniProfiler.EF was also added to my domain layer). Without profiling entity framework, everything works fine. When I profile EF by uncommenting the line MiniProfilerEF.Initialize();, I get the error:

A provider factory for the specified store connection of type 'MvcMiniProfiler.Data.EFProfiledDbConnection' could not be discovered. The registered provider factories and all provider factories in the assembly where 'MvcMiniProfiler.Data.EFProfiledDbConnection' is defined were searched for a factory that would produce a matching connection.

I tried get the latest source code as I read the update for EF 4.1 required it. Now, when I run the project I get the error:

Unable to determine the provider name for connection of type 'MvcMiniProfiler.Data.EFProfiledDbConnection'.

The documentation I've gone through is a little confusing as I can't tell what is new and what is old. From this post it seems I need to modify anything in my web.config. Is there another step I'm missing? Thanks for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦爱 2025-01-05 17:18:35

您应该将 MiniProfilerEF.Initialize(); 行放在之前对数据库的任何访问:

protected void Application_Start()
{
       MiniProfilerEF.Initialize();

       // Start access database from here ...
       // For example call MyDbContext.Database.Exists();
}

You should put MiniProfilerEF.Initialize(); line before any access to database:

protected void Application_Start()
{
       MiniProfilerEF.Initialize();

       // Start access database from here ...
       // For example call MyDbContext.Database.Exists();
}
深海蓝天 2025-01-05 17:18:35

您的 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.EntityFramework, Version=1.9.1.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>

Do you have this entry in your Web.config file?

  <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.EntityFramework, Version=1.9.1.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文