【问题标题】:How do I solve The Entity Framework provider exception如何解决实体框架提供程序异常
【发布时间】:2016-05-16 18:11:59
【问题描述】:

我已经将我的 WCF 项目发布到服务器上,我还在使用 WCF 服务的同一个盒子上发布了一个 MVC 应用程序。

在我的 MVC 应用程序上尝试登录时,它使用了 wcf 服务,但我在浏览器上得到了这个异常,

实体框架提供程序类型 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' 在应用程序配置文件中注册 对于具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序 无法加载。确保程序集限定名称是 并且该程序集可用于正在运行的应用程序。

这是一个实体框架异常,但我假设由于我的项目已经在开发环境中引用了 EF,因此在部署服务项目后,DLL 也应该包含 EF 引用,但我不确定为什么会出现此错误。

我可以看到这条消息是因为我打开了includeExceptionDetailInFaults="True"

【问题讨论】:

  • 从 NuGet 包管理器安装导致项目中未正确安装。再试一次 PM> Install-Package EntityFramework
  • 正如我所提到的,这不在我的本地机器上,这是在我没有安装 Visual Studio 的服务器上。这是一个抛出此错误的已发布应用程序,它在我的本地计算机上运行良好。 @NazmulHasan
  • 删除 bin 文件夹并清理/重建您的解决方案,正如我在 my answer to another similar question 中所建议的那样。

标签: c# asp.net-mvc entity-framework wcf publish


【解决方案1】:

@FranciscoGoldenstein 说!您不需要在控制台应用程序中安装 Entity Framework 或其他任何东西,您只需要添加对程序集 EntityFramework.SqlServer.dll 的引用。您可以将此程序集从使用实体框架的类库项目复制到 LIB 文件夹并添加对它的引用。

总结:

  • 类库应用程序:
    • 安装实体框架
    • 编写数据层代码
    • app.config 文件包含与实体框架相关的所有配置,但连接字符串除外。
  • 创建控制台、Web 或桌面应用程序:
    • 添加对第一个项目的引用。
    • 添加对 EntityFramework.SqlServer.dll 的引用。
    • app.config/web.config 有连接字符串(请记住,配置条目的名称必须与 DbContext 类的名称相同。

这对我有用!希望对你有帮助。

也可以试试这个链接Entity Framework Provider type could not be loaded?

【讨论】:

  • 你是对的,出于某种原因,当我出于某种原因发布它时,构建没有添加该库。
【解决方案2】:

解决此问题的最简单方法是在您的 EF 项目的一个类中添加以下行:

public class Blablabla
{
    private static string __hack = typeof(SqlProviderServices).ToString();

    // other class members as they were before.
}

这将强制构建过程将 EntityFramework.SqlServer.dll 复制到任何引用 EF 项目的项目的 \bin 文件夹中。

无需在任何下游项目中安装 EF nuget 包或显式引用 EntityFramework.SqlServer.dll。

【讨论】:

  • 这是一个绝妙的技巧,避免了手动添加EntityFramework.SqlServer.dll
【解决方案3】:

卸载 Entity Framework nuget 并重新安装,对我有用。

【讨论】:

    【解决方案4】:

    我也有类似的问题

    通过执行以下操作解决了我的问题:

    【讨论】:

      【解决方案5】:

      也许有些愚蠢,但供将来参考:

      就我而言,我正在使用单元测试。我将配置添加到 app.config,但从未将实体框架安装到单元测试项目中。
      安装后,到目前为止一切顺利。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多